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