多數人使用 html 4 和 xhtml 1 編寫網頁。相對較少的 html 狂熱者了解語義 html 的概念、驗證 html 結構和改進文檔的可訪問性。高質量的 html 文檔是反復權衡、設計優選和討論醞釀的結果。盡管受到諸多批評,還沒有任何語言的普及性能與 html 比肩。多數用戶滿足于標準的現狀,仿佛生來就該如此一樣。
但是和其他很多標準一樣,html 也有后繼者。即便現在,專家仍然在考慮 html 的下一版本,解決當前版本中已知的所有問題。和任何人多的地方一樣,這些專家也對此項工作的未來方向持有不同意見。
關于新 html 版本的第一個提議來自 w3c 組織的一個工作組。這個工作組想法圍繞著 xhtml 2— 這個標準延續了原來進一步凈化 xhtml、回歸第一版 html 設計理念的開發方向。
w3c 之外的一些重要的 html 專家 — 瀏覽器廠商、web 開發人員、作者和其他有關人員 — 不同意 xhtml 2 的方向。2004 年,他們成立了一個獨立的工作組,為新的 html 版本提出了一種新的設計方向。在 whatwg(web 超文本應用程序技術工作組,web hypertext application technology working group)的名義下,他們推出了 html 5 和 web forms 2。
數年之后,通過工作草案清楚地描述了 html 的另一種發展方向。2007 年 4 月,w3c 針對是否接納 html 5 進入標準審核程序的提議進行了投票,(還)沒有承認它是正式標準。多數人贊同。于是出現了一種有意思的情形:w3c 同時研究兩種互相競爭的 html 和 xhtml 后繼技術。從理論上說,兩者都有充分的理由。從實踐上說,讓所有的主流瀏覽器支持這兩種標準還要克服很多障礙。
這就是導致目前這種情況的基本事實。更有意義的是討論兩種提議之間的真正分歧。本文概括介紹了兩種提議的基本要點,然后剖析兩者的設計理念。
css:級聯樣式表
html:超文本標記語言
w3c:萬維網聯盟
xhtml:可擴展超文本標記語言
理解 xhtml 2 背后隱藏的設計理念需要了解一點歷史。20 世紀 90 年代初,第一個 html 版本是基于標準通用標記語言(sgml)的。主要的區別在于超鏈接特性 — 萬維網的關鍵基礎和成功因素。和 sgml 一樣,html 允許作者描述文檔的結構,把頭部和段落、有序列表、無序列表分開。在屏幕上的顯示結果和瀏覽器有關。
隨著 web 日漸普及,html 用戶要求控制頁面的觀感。瀏覽器廠商在 html 2 和 3 中推出了新的特性。網頁變得難以理解,復雜的嵌套表結構成為控制頁面布局的主要手段。文檔的其余部分則充斥著 font 標記和 color 聲明。原來的文檔結構已經難以理清。
html 4 的出現就是為了結束這種混亂,它將表示邏輯推給了 css,為高級的內容定位引入了層(div)。和 html 3 相比這意味著代碼編寫模式上的變化。為了簡化遷移的過程,通過 html 4 的 transitional 版本來支持舊的 html 3 結構。適用于高級用戶的 strict 版本則要求將內容和表示徹底分開。
第一個 html 4 網站把 div 當作新的圣杯一樣使用,頁面中幾乎每個需要略加修飾的元素都用上,包括(但不限于)頭部。html style 屬性是常見的描述表示細節的地方。最終從網頁中消滅了泛濫成災的表格。但內容和表示邏輯仍然混在一起。必不可少的 css 文件只有寥寥數行。
最近,一些知名的 web 開發人員為 html 4 樣式表提出了一種更巧妙的辦法。在現代瀏覽器中,css 屬性并沒有局限于 div 元素。只要愿意可以為任何 html 元素指定樣式。很多 weblog 開始談論語義 html。沒有完全禁止 div 元素,但是網頁編寫者開始使用最適合描述其內容的 html 元素。比方說,多數網站的導航菜單最好用無序列表來描述。再比如,不對段落元素使用 bigheader 這樣的類名,而改為 h1 元素,然后用 css 根據要求修改表示形式。
同時,w3c 提出 xhtml 1 作為符合結構良好而有效的 html 4 的 xml 版本。對于 xml 用戶來說,這樣做簡化了將 xml 內容轉化成網頁并用已有驗證程序檢查轉換結果的工作。xhtml 1.1 嘗試將不同的問題隔離到不同的模塊中。模塊化方法便于針對不同的需要重用標準的不同部分,也有利于用新的功能擴展標準。
和 html 4 相比,xhtml 1.1 的用戶甚至更多,把內容和表示分離開。但是和過去一樣,一些實際問題只能使用 css 中技巧來解決。比如,無序列表表示的菜單結構通常包括漂亮的圖片。但是,圖像不大容易通過文本-語音設施讀給有視覺障礙的人聽。而且 lynx 這樣的文本瀏覽器也不能顯示圖像。一個復雜的 css 技巧可以在瀏覽器中隱藏文本顯示圖像。但是如果不同頁面上的菜單不同,就很難用 css 指定這部分內容了。
xhtml 2 背后最重要的設計理念是進一步分離內容和表示,改進 html 4 和 xhtml 1 殘留的瑕疵。比如,為無序列表中的每項指定圖像的原生支持。原來的 img src 標記換成了可用于任何元素的可選屬性 src。修改后的 css 完全脫離了內容,不支持圖像的設備很容易轉而表示文本。
但 css 不是 web 開發人員的惟一挑戰。大量的時間用于服務器和 html 表單的交互以及存在大量 javascript™ 代碼。表單僅限于一維的鍵值對。開發 javascript 代碼工作量很大,但是在文本-語音轉換設備這樣的接口上毫無用處。
基于模塊化的方法,xhtml 2 用 xforms 模塊替換了 html forms,使用適當的應用程序模型增加了對常見問題的支持。xforms 不需要一行腳本就能指定交互邏輯、驗證規則和計算方法。此外,這種技術采用了豐富的 xml 結構而不是鍵值對,允許出現嵌套的子表單和重復的元素。除了提供一個強大的引擎外,文本-語音設備更適合改變應用程序的豐富性。
除了 xforms,還有其他一些 xhtml 有關的問題抽取為獨立的規范滿足其他需要 — 比如 xml events、xframes 和 ruby(亞洲語言)。
隨著表示的分離,編程也從標準中分離出來。onclick 之類的交互屬性被 xml events 模塊代替。由于 xml events 規范本身就是為此而設計的,它提供了一組更強大的工具來處理用戶接口。
對于 xhtml 2 的創新,總結而言其基本理念就是分解不同的問題。問題不再是 html 的次要特性,而成為新規范的主要目的。因此,新規范最適合優化面臨的問題。不過,區別對待不同的問題是出于理念而不是實踐的需要。熟悉使用這套工具的聰明的開發人員可以得到需要的結果。但是當前 html 版本的一般用戶能否創建高質量的 xhtml 文檔并不好說。
xhtml 2 的目標很可能不是一般 html 用戶。但是在好的開發人員手中,可以作為增強可訪問性的不錯的方法。
whatwg 在設計 html 5 的時候采用了一種更符合實際的方法。沒有考慮問題分解之類的抽象理念,這個工作組從當前主流瀏覽器的行為出發制定文檔,和 w3c 規范完全不同。在上述分析的基礎上,這個工作組調查了 html 的實際運用。
根據這些信息,工作組提出了旨在簡化一般 web 開發人員工作的方案。雖然 html 5 宣稱源于上一 html 版本,但其主要目標不是純粹性。比如,模塊化文檔的主要目標是方便用優化的 web 應用程序替換。
基于此目的的模塊化語言大大簡化了 web 應用程序的開發。比如,html 5 支持數據表格、菜單和工具欄這類交互組件。使用默認行為的描述性 html 元素可以避免用大量代碼模擬通用 div 的行為。
html 5 規范不限于 html 元素和屬性。它定義了編輯文檔和拖放式交互這類專用的 javascript api。這種方法和分解問題的辦法截然不同。它簡化了 web 開發人員 api 但增加了規范的大小。
html 5 和 html 4 的相似性遠遠超過 xhtml 2 和 xhtml 1 的相似性。遷移路徑更平坦了,有經驗的 html 4 開發人員熟悉新版本也更方便。新特性遵循相似的邏輯。特定元素的專門事件屬性允許 html 編輯人員提供更適當的文本完成功能。
當前的 web 應用程序和服務器的交互依賴于異步 javascript + xml (ajax)。html 5 認識到了和服務器交互的重要性,定義了多種和網絡交互、分發收到的服務器事件和從其他域向文檔發送消息而不會造成安全問題的方式。
html 5 的基本設計理念是利用 web 開發人員需要的特性擴展 html 4。html 5 在繼承 html 4 基本技術的同時進行了簡化。為了解決 html v4 的不足,html v5 選擇最簡單直接的辦法重新設計。
xhtml v2 和相關模塊得到了 w3c 的官方支持,相關模塊成為 w3c 支持的其他 xml 規范的重要因素。不幸的是,w3c 的官方認可不能保證主流 web 瀏覽器的支持。支持一般的 xhtml v2 不是問題:現代瀏覽器已經支持很多功能。正確地使用 xhtml v2 依賴于相關模塊的可用性。在撰寫本文的時候,microsoft 是否要擴展 windows® internet explorer® 以支持 xml events 和 xforms 這些特性還不清楚。一種 mozilla xforms 插件,包括 xml events,已經開發了數年。該插件提高了這種技術的功能,降低了實現的難度。
html v5 規范的編寫保持了和瀏覽器廠商的深入溝通,始終考慮到實現的問題。盡管該團隊對 w3c 官方認可表示懷疑。faq 甚至沒有正式回答什么時候通過正式批準的問題。不論 w3c 的態度如何,瀏覽器廠商似乎決定實現非正式的 html 5 標準。瀏覽器廠商趕在官方標準出爐之前已不是第一次了。
到目前為止,html 5 和 xhtml 2 都還不是正式的推薦標準。將來一些細微的地方還可能變化。但它們的發展方向不會變,兩者都解決了現行標準存在的一些不足。未來的瀏覽器如何增加對這兩種新標準的支持還有待觀察。當前瀏覽器同時支持 html 4 和 xhtml 1。類似地,將來的瀏覽器可能同時支持 html 5 和 xhtml 2。這兩種標準都有各自的支持者。
如果對 xhtml 1.1 比 html 4 更關心,希望創建的文檔能夠支持不同的設備,可能更偏愛 xhtml 2。如果使用 xhtml 1 僅僅是因為它符合 xml 標準,而更喜歡 html 5 的新特性,xhtml 5(用 xml 改寫的 html 5)也許是您的最佳選擇。
html 5 頗受使用 html 4 開發交互式 web 應用程序的開發人員的歡迎。對于使用所見即所得 文檔編輯器的站點這種方法更可行。但是要具體情況具體分析,html 4 和 xhtml 1 很可能要并存很長時間。
新聞熱點
疑難解答