從HTML 2.0到HTML5
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
HTML是World Wide Web上統(tǒng)一的語(yǔ)言。使用它所提供的標(biāo)簽,人類已經(jīng)創(chuàng)建了數(shù)之不盡、姿態(tài)萬(wàn)千的超鏈接的文檔網(wǎng)絡(luò)。看看Aamzon、eBay和Wikipedia,再看看個(gè)人博客和專為貓咪建立的站點(diǎn),無(wú)一不是HTML的杰作。 HTML5是這門通用語(yǔ)言的最新版。雖然這次升級(jí)的變化之大史無(wú)前例,但HTML更新?lián)Q代已經(jīng)不是第一次了。下面我們不溯本求源,從它的誕生開始回顧一下HTML的歷史。 在發(fā)明Web的同時(shí),Tim Berners-Lee先生提出了HTML(HyperText Markup Language,超文本標(biāo)記語(yǔ)言)。1991年,他寫了一篇名為“HTML Tags”的文檔,其中建議人們使用20來(lái)個(gè)元素編寫網(wǎng)頁(yè)。 說(shuō)到用尖括號(hào)包圍文本的標(biāo)簽,并不是Tim先生的首創(chuàng)。更早的SGML(Standard Generalized Markup Language,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言)中就開始使用這種標(biāo)簽了。Tim先生當(dāng)時(shí)并沒有發(fā)明新語(yǔ)言,而是著眼于利用已經(jīng)存在的技術(shù)——在HTML5的發(fā)展過(guò)程中,這個(gè)傾向依然得到了體現(xiàn)。 從IETF到W3C:HTML 4誕生記HTML 1?這個(gè)版本實(shí)際上是不存在的。最早的HTML官方規(guī)范,是由IETF(Internet Engineering Task Force,因特網(wǎng)工程任務(wù)組)發(fā)布的HTML 2.0。這一規(guī)范中的許多特性,都是在已有實(shí)現(xiàn)的基礎(chǔ)上歸納總結(jié)出來(lái)的。比如說(shuō),1994年居于市場(chǎng)領(lǐng)導(dǎo)地位的Mosaic瀏覽器提供了一個(gè)<img>標(biāo)簽,作者可以通過(guò)它在自己的文檔中嵌入圖像。后來(lái),img元素就出現(xiàn)在了HTML 2.0中。 W3C(World Wide Web Consortium,萬(wàn)維網(wǎng)聯(lián)盟)繼IETF之后成為HTML后續(xù)標(biāo)準(zhǔn)的制定者,其官方網(wǎng)站是http://www.w3.org。20世紀(jì)90年代中期以后,W3C對(duì)HTML進(jìn)行了幾次升級(jí),直至1999年發(fā)布HTML 4.01. 此時(shí),HTML的發(fā)展走到了一個(gè)十字路口上。 XHTML 1:符合XML標(biāo)準(zhǔn)的HTMLHMLT 4.01之后的一個(gè)修訂版變成了XHTML 1.0。其中,X表示“eXtreme”(極端)。當(dāng)時(shí)的Web開發(fā)人員在提到這個(gè)字母的時(shí)候,必須雙臂交叉,作出一個(gè)X的形狀來(lái)。 誰(shuí)說(shuō)的?純屬瞎掰。那個(gè)X表示的是“eXtensible”(可擴(kuò)展),而且也沒人要求你必須雙臂交叉。 XHTML 1.0規(guī)范的內(nèi)容與HTML 4.01完全相同。沒有添加任何新元素或新屬性。這兩個(gè)規(guī)范唯一的差別就是對(duì)HTML的語(yǔ)法作出了不同的規(guī)定。HTML給予了作者最大的自由度,他們可以按照自己的意愿去寫元素和屬性,但XHTML要求作者遵從XML規(guī)則;XML是W3C大多數(shù)技術(shù)規(guī)范的基礎(chǔ),是一種更為嚴(yán)格的標(biāo)記語(yǔ)言。 語(yǔ)法規(guī)則變得更嚴(yán)格了,這本身沒有什么壞處。新規(guī)范的目的就是讓作者按照統(tǒng)一的風(fēng)格來(lái)編寫標(biāo)簽。此前的標(biāo)簽和屬性可以大寫、小寫,或者任意大小寫字母的組合,而有效的XHTML 1.0文檔則要求所有標(biāo)簽和屬性一律必須小寫。 XHTML 1.0發(fā)布的時(shí)候恰逢瀏覽器普遍開始支持CSS。開發(fā)人員意識(shí)到了Web標(biāo)準(zhǔn)的出現(xiàn),特別是在The Web Standards Project的倡導(dǎo)下,XHTML規(guī)定的這種更嚴(yán)格的語(yǔ)法被看成是寫標(biāo)記的一種“最佳實(shí)踐”。 然后,W3C發(fā)布了XHTML 1.1。 雖然XHTML 1.0只不過(guò)是用XML來(lái)重新表示的HTML,但XHTML 1.1卻是真正的、純粹的XML。這意味著不能以text/html這樣的MIME類型來(lái)提供XHTML 1.1文檔??墒?,如果有作者以XML的MIMI類型(application/xhtml+xml)來(lái)發(fā)布文檔,那么當(dāng)時(shí)世界上最流行的Web瀏覽器——Internet Explorer,又無(wú)法呈現(xiàn)該文檔。 看起來(lái)W3C好像已經(jīng)開始與日常的Web發(fā)布脫節(jié)了。 XHTML 2:我們不接受!如果Dustin Hoffman在電影《畢業(yè)生》(The Graduate)中的角色是一名Web設(shè)計(jì)師,那么W3C只會(huì)對(duì)他說(shuō)一句話,就一句話:XML。[1] W3C在接管HTML的時(shí)候,HTML的版本已經(jīng)到了4。他們就開始開發(fā)XHTML 2,旨在把Web引向建立在XML之上的無(wú)比光明的美好明天。 雖然XHTML 2的名字聽起來(lái)與XHTML 1非常類似,但它們的差別卻非常之大。與XHTML 1不一樣,XHTML 2與既有的Web內(nèi)容都不兼容,甚至就連以前版本的HTML都不兼容。說(shuō)白了,XHTML 2就是要成為一門純粹的語(yǔ)言,與以前規(guī)范的邋遢歷史沒有任何干系。 沒想到竟是一場(chǎng)災(zāi)難。 分裂:WHATWG TF?一股反抗勢(shì)力在W3C內(nèi)部逐步壯大。W3C熱衷于從理論角度構(gòu)建純凈的標(biāo)準(zhǔn),卻無(wú)視Web設(shè)計(jì)人員的需求。來(lái)自O(shè)pera、Apple和Mozilla代表對(duì)這種傾向非常反感。他們希望那些支持創(chuàng)建Web應(yīng)用的特性能夠得到更多的關(guān)注。 2004年的一次工作組會(huì)議成為了矛盾激化的導(dǎo)火索。伊恩·??松↖an Hickson)——當(dāng)時(shí)還在Opera Software效力——建議擴(kuò)展HTML,以支持創(chuàng)建Web應(yīng)用。這個(gè)建議被駁回了。 心懷不滿的反抗者建立了自己的組織:Web Hypertext Application Technology Working Group,簡(jiǎn)稱WHATWG。 從Web Apps 1.0到HTML5從一開始,WHATWG的工作方式就與W3C截然不同。W3C采取基于表決的方式:提出議題、討論議題,然后投票表決。而在WHATWG,同樣會(huì)提出和討論議題,但哪些特性可以寫入規(guī)范的最終決定權(quán)在編輯手中。這個(gè)編輯就是伊恩·??松?。 表面上看,W3C的流程更民主也更公平。但實(shí)際上,政治博弈加上內(nèi)部爭(zhēng)論,經(jīng)常會(huì)導(dǎo)致流程停滯不前。而在WHATWG,任何人都可以自由地發(fā)表意見,但負(fù)責(zé)拍板的則只有編輯一個(gè)人,因此工作效率明顯高很多。其實(shí)編輯也并非擁有絕對(duì)的權(quán)力:一個(gè)僅由受邀人員組成的指導(dǎo)委員會(huì)可以質(zhì)疑編輯的偏執(zhí)做法。 開始的時(shí)候,WHATWG的大部分工作都被分為兩個(gè)規(guī)范:Web Form 2.0和Web Apps 1.0。這兩個(gè)規(guī)范都是以HTML為基礎(chǔ)擴(kuò)展而來(lái)的。后來(lái),這兩個(gè)規(guī)范又被合并到一起,簡(jiǎn)單地稱為HTML5。 再次聯(lián)手在WHATWG開發(fā)HTML5期間,W3C繼續(xù)制定XHTML 2規(guī)范。如果說(shuō)XHTML 2規(guī)范的制定速度很快那是忽悠人的。實(shí)際上,別提有多慢了。 2006年10月,Tim Berners-Lee先生發(fā)表了一篇博客,承認(rèn)將Web從HTML遷移到XML是行不通的。幾個(gè)月后,W3C簽發(fā)了新委任狀,成立了一個(gè)HTML工作組。這個(gè)工作組并沒有從頭開始,而是明智地決定在WHATWG工作成果的基礎(chǔ)上開發(fā)下一個(gè)HTML版本。 一套起步停車的動(dòng)作做下來(lái)以后,局面反倒讓人不理解了。W3C同時(shí)有兩個(gè)工作組,分別負(fù)責(zé)制定不同的、互不兼容的標(biāo)記語(yǔ)言:XHTML 2和HTML 5(注意數(shù)字5前面有一個(gè)空格)。與此同時(shí),還有一個(gè)獨(dú)立的組織——WHATWG,正在開發(fā)HTML5(沒有空格)規(guī)范,而該規(guī)范還將成為上述W3C中一個(gè)規(guī)范的基礎(chǔ)! 每個(gè)想稿清楚上述狀況的Web設(shè)計(jì)人員都會(huì)發(fā)現(xiàn),還是破解電影《記憶碎片》(Memento)、《雷管》(Primer)中撲朔迷離的故事情節(jié)更容易一些,甚至就連摸清大衛(wèi)·林奇(David Lynch)這樣善用顛倒錯(cuò)亂、詭異多變的形象來(lái)迷惑人的導(dǎo)演的套路都沒有那么復(fù)雜。 XHTML已死,XHTML語(yǔ)法長(zhǎng)生種種迷團(tuán)終于在2009年煙消云散。W3C宣布不再續(xù)頒XHTML 2工作組的委任狀。XHTML 2作為一種格式實(shí)際上已經(jīng)死了好幾年了;這次的宣布差不多可以看成為它補(bǔ)發(fā)了一張死亡證明。 奇怪的是,XHTML 2之死并沒有平靜地過(guò)去,不少興災(zāi)樂禍的小人跳出來(lái)大放厥詞。XML反對(duì)者趁機(jī)奚落使用XHTML 1的人——連XHTML 1和XHTML 2幾乎沒有共同點(diǎn)這個(gè)事實(shí)都視而不見。 這時(shí)候,那些遵照XHTML 1較為嚴(yán)格規(guī)則的作者又擔(dān)心起來(lái),生怕HTML5又回到支持邋遢標(biāo)記的老路上去。 其實(shí),這個(gè)擔(dān)心是多余的。HTML5允許邋邋遢遢的標(biāo)記,也支持嚴(yán)格的標(biāo)記,到底邋遢還是嚴(yán)格就要看編寫標(biāo)記的人了。 HTML5的時(shí)間線HTML5目前的狀態(tài)已經(jīng)不似先前那么含含糊糊了,但仍然還是不甚明了。 有兩個(gè)工作組在圍繞HTML5工作。WHATWG正在使用它的“提交后評(píng)審”流程創(chuàng)建HTML5規(guī)范。而W3C HTML 工作組則把這個(gè)規(guī)范作為輸入,并將其納入到了自己的“評(píng)審而后提交”的流程當(dāng)中。不難想見,這個(gè)聯(lián)盟并不和諧。最后,仍然還需要就類似“要空格還是不要空格?”這樣討厭的問(wèn)題達(dá)成共識(shí)才行。 對(duì)于剛剛涉足HTML5的Web開發(fā)人員來(lái)說(shuō),最令他們困惑的一個(gè)問(wèn)題莫過(guò)于“這個(gè)規(guī)范什么時(shí)候能夠完工???” 在一次采訪中,伊恩·??松岬紿TML5要成為推薦標(biāo)準(zhǔn),估計(jì)要等到2022年。有些Web設(shè)計(jì)者一聽他這么說(shuō),立刻就激動(dòng)起來(lái)。他們并不理解所謂的“推薦標(biāo)準(zhǔn)”意味著什么,但他們知道從現(xiàn)在開始數(shù)到2022,自己的10根手指頭不夠用的。 這種激動(dòng)完全是沒有來(lái)由的。想一想吧,成為“推薦標(biāo)準(zhǔn)”,意味必須要有兩個(gè)HTML5的完整實(shí)現(xiàn)??紤]到這個(gè)規(guī)范涵蓋的范圍之廣,這個(gè)時(shí)間點(diǎn)恐怕都有點(diǎn)倉(cāng)促了。歷史表明,沒有哪款瀏覽器在實(shí)現(xiàn)既有標(biāo)準(zhǔn)方面是做得出色的。僅僅支持一個(gè)小小的abbr元素,Internet Explorer就用了10多年的時(shí)間。 與HTML5真正有關(guān)系的日期應(yīng)該是2012年。這是它預(yù)計(jì)將會(huì)成為“候選標(biāo)準(zhǔn)”的時(shí)間。成為“候選標(biāo)準(zhǔn)”,就意味著標(biāo)準(zhǔn)的制定工作結(jié)束了。 不過(guò),即便是這個(gè)時(shí)間對(duì)Web開發(fā)人員來(lái)說(shuō)也不是特別重要。真正重要的問(wèn)題是瀏覽器從什么時(shí)候開始支持HTML5的特性。從瀏覽器一支持CSS 2.1的部分特性,我們就開始使用那些特性了。要是等到所有瀏覽器都完全支持CSS 2.1,我們才去使用它,那么即使到了今天也仍然還要繼續(xù)等下去。 HTML5不也一樣嘛。沒有人規(guī)定這個(gè)時(shí)間點(diǎn),說(shuō)不到這個(gè)時(shí)間你就不能使用HTML5。只要瀏覽器支持,我們就先使用那些它們支持的特性就不完了嗎。 切記,HTML5并不是一門憑空造出來(lái)的新語(yǔ)言。它的標(biāo)記變化都是革新性的,不是革命性的。無(wú)論你現(xiàn)在使用哪個(gè)版本的HTML創(chuàng)建網(wǎng)站,你都可以說(shuō)自己已經(jīng)在使用HTML5了。 [1] 麥奎爾先生對(duì)男主角本只說(shuō)了一句話:塑料?!g者注 原文鏈接:A Brief History of Markup 該文章在 2011/1/17 12:36:08 編輯過(guò) |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |