從 IETF 到 W3C: HTML 4 之路
HTML 1 并不曾存在,HTML 的第一個官方版本就是由 IETF (互聯(lián)網(wǎng)工程任務組) 推出的 HTML 2.0。問世之前,這個版本中的很多細則已經(jīng)被實現(xiàn),比如,1994年的 Mosaic 瀏覽器已經(jīng)實現(xiàn)了在文檔中嵌入圖片的方法,后來 HTML 2.0 便吸納了 img 這個標簽。
后來,W3C 取代 IETF 的角色,成為 HTML 的標準組織,1990年代的后半頁,HTML 的版本被頻繁修改,直到1999年的 HTML 4.01,至此,HTML 到達了它的第一個拐點。
XHTML 1: XML 風格的 HTML
HTML 在 HTML 4.01 之后的第一個修訂版本就是 XHTML 1.0,其中 X 代表 “eXtensible” ,擴展,當然也有人將之解讀為 “eXtreme”,極端。XHTML 1.0 是基于 HTML 4.01 的,并沒有引入任何新標簽或?qū)傩?,唯一的區(qū)別是語法,HTML 對語法比較隨便,而 XHTML 則要求 XML 般的嚴格語法。
使用嚴格的語法規(guī)范并非壞事,要求開發(fā)者使用單一的代碼風格,比如,HTML 4.01 允許你使用大寫或小寫字母標識標記元素和屬性,XHTML 則只允許小寫字母。XHTML 1.0 的推出剛好碰上了 CSS 的崛起,Web 開發(fā)設計者們開始意識到 Web 標準問題,基于 XHTML 的嚴格語法規(guī)范被視為編寫 HTML 代碼的最佳實踐。
于是,W3C 推出 XHTML 1.1。
如果說 XHTML 1.0 是 XML 風格的 HTML,XHTML 1.1 則是貨真價實的 XML。這意味著 XHTML 1.1 無法使用 text/html mime-type 直接輸出,然而,如果 Web 開發(fā)者使用 XML mime-type,則當時的主流瀏覽器,IE 則壓根不支持??瓷先ィ琖3C 似乎正在與當時的 Web 脫節(jié)。
出力不討好的 XHTML 2
對 W3C 而言,到了 HTML 4 已經(jīng)是功德圓滿,他們的下一步工作是 XHTML 2,希望將 Web 帶向 XML 的光明未來。雖然 XHTML 2 聽上去和 XHTML 1 類似,它們卻有很多差別,XHTML 2 不向前兼容,甚至不兼容之前的 HTML。它是一種全新的語言,赤條條來去無牽掛。這實在是一場災難。
WHATWG:與 W3C 決裂
W3C 閉門造車的作風引起了一些人的不滿,來自 Opera, Apple, 以及 Mozilla 的代表開始表達反對聲音。2004年,Opera 的 Ian Hickson 提議在 HTML 基礎上進行擴展以適應新的 Web 應用,該提議遭到 W3C 的拒絕。于是,他們自發(fā)組織成立了超文本應用技術工作組,就是 WHATWG。
從 Web Apps 1.0 到 HTML5
從一開始,WHATWG 就和 W3C 走不同的路線,W3C 對問題的討論是集體投票,而 WHATWG 則由主筆 Ian Hickson 定度。表面上看,W3C 更民主,然而事實上,各種內(nèi)部紛爭會使一些決議限于泥潭,在 WHATWG,事情的進展會更容易,不過,主筆的權力并非無限大,他們的委員會可以對那些過于偏執(zhí)的主筆進行彈劾。
一開始,WHATWG 的主要工作包括兩部分,Web Forms 2.0 和 Web Apps 1.0,它們都是 HTML 的擴展,后來,他們合并到一起成為現(xiàn)在的 HTML5 規(guī)范。
言歸于好
在 WHATWG 致力于 HTML5 的同時,W3C 繼續(xù)他們的 XHTML 2.0,然而,他們慢慢地陷入困境。
2006年10月,Web 之父 Tim Berners-Lee 發(fā)表了一篇博客文章,表示,從 HTML 走向 XML 的路是行不通的,幾個月后,W3C 組建了一個新的 HTML 工作組,他們非常明智地選擇了 WHATWG 的成果作為基礎。這一轉(zhuǎn)變帶來一些困惑,W3C 同時進行這兩套規(guī)范,XHTML 2 和 HTML 5 (注意,W3C 的 HTTML 5 在 5 之前有個空格,而 WHATWG 的 HTML5 則沒有空格),而 WHATWG 也在進行著同樣的工作。
XHTML 已死: XHTML 語法永存
這一混亂局面到了 2009 年開始變得清晰,W3C 宣布終止 XHTML 2 的工作,這是一份關于 XHTML 2 的遲到的訃告。這一消息被那些 XML 的反對者視為珍寶,他們借此嘲笑那些使用 XHTML 1 規(guī)范的人,然而他們似乎忘記了,XHTML 1 和 XHTML 2 是截然不同的東西。于此同時,XHTML 1 規(guī)范的制定者擔心,XHTML 1 中的嚴格語法規(guī)范會被 HTML5 棄用,這種擔心后來證明是多余的,HTML5 既支持松散語法,也支持 XHTML 1 般的嚴格語法。
HTML5 路線圖
HTML5 的現(xiàn)狀是,它不再象以前那樣讓人困惑,然而仍不夠明朗。有兩個組織在同時制定它的規(guī)范,這兩個組織有著完全不同的行事風格,WHATWG 是先買后嘗,W3C 是先嘗后買,他們形成了一個不太靠譜的聯(lián)姻,最終人們必將面臨一個 HTML5 還是 HTML 5 的問題。
更讓開發(fā)者困惑的是,他們什么時候才可以試水 HTML5。
在一次訪談中,Ian Hickson 提到了 2022,表示要到那時 HTML5 才會形成"推薦標準",此話一出,立刻招來 Web 設計者們的憤怒,盡管他們不知道推薦標準時什么意思,但他們明白,2022 已經(jīng)是猴年馬月的事了。
這還不算,更重要的是,這個推薦標準涉及兩套規(guī)范,考慮到 HTML5 標準的規(guī)模,這個日期還是太樂觀了,畢竟,各大瀏覽器以往對既有標準的兼容并不遂人意,想當初,IE 花了10年才接納 abbr 這個標簽。
2012 年,HTML5 會被接納為候選標準,這將是 HTML5 真正開始發(fā)力的日子。對 Web 開發(fā)設計者來說,這并不重要,重要的是瀏覽器的支持,就像 CSS 2.1,當有瀏覽器開始支持這一規(guī)范的時候,就有開發(fā)設計者在使用了,倘若必須等到所有瀏覽器都支持才開始入手,恐怕我們現(xiàn)在還在等待中。
HTML5 也一樣,并不會有一個時間點,宣布 HTML5 已經(jīng)準備妥當,相反,我們會先開始使用它的部分功能,HTML5 并不是一個從零開始全新的東西,它是舊的 HTML 標準的改進,事實上,不管你正在使用的 HTML 是哪個版本,你已經(jīng)在使用 HTML5 了。