HTML 5推薦標(biāo)準(zhǔn)的成功之一是提供了一個(gè)詳細(xì)的規(guī)范來說明如何解析HTML文檔。一直以來,瀏覽器提供商都試圖猜測(cè)和拷貝其它瀏覽器的實(shí)現(xiàn),寄希望于他們的解析器在處理HTML文檔的時(shí)候不產(chǎn)生過多的問題。
盡管HTML 5中的一些部分目前爭(zhēng)議比較大,關(guān)于解析的這部分得到了瀏覽器廠商的一致認(rèn)同。一旦瀏覽器開始實(shí)現(xiàn)它,用戶就可以從所帶來的兼容性提升中獲益。
HTML 5解析規(guī)則的最初實(shí)現(xiàn)之一是為了支持HTML 5驗(yàn)證器而開發(fā)的。(如果你想測(cè)試這個(gè)驗(yàn)證器的話,html5code.net' title='html5模板網(wǎng)'>http://ejohn.org應(yīng)該是合法的HTML 5。)這個(gè)實(shí)現(xiàn)是用Java開發(fā)的,提供了SAX和DOM的接口,并且是開源的。
有趣的是Henri Sivonen(驗(yàn)證器的作者)最近為Gecko開發(fā)了一個(gè)全新的HTML 5解析引擎,會(huì)在下一個(gè)版本的Firefox中使用。
這個(gè)實(shí)現(xiàn)實(shí)際上是通過把Henri的HTML 5解析器的Java實(shí)現(xiàn)自動(dòng)轉(zhuǎn)換為C++來完成的。這個(gè)轉(zhuǎn)換是自動(dòng)完成的,所有的改動(dòng)都會(huì)提交到Mozilla的代碼庫(kù)中。
一般來說,當(dāng)提到這種大規(guī)模的程序式的把Java代碼庫(kù)轉(zhuǎn)換到C++的做法時(shí),我會(huì)跳出來。不過結(jié)果非常的出人意料:頁(yè)面加載的性能提升了3%。
這些是建立在該代碼庫(kù)會(huì)提供的一連串的bug修正和一致性檢查的基礎(chǔ)上。你可以在Mozilla的bug庫(kù)中查看該補(bǔ)丁的進(jìn)度。
如果你想嘗試新的解析器的話(你不太可能發(fā)現(xiàn)很多明顯的變化,但是任何尋找bug的努力都是值得感謝的。),下載一個(gè)Firefox的每日構(gòu)建版本,打開about:config,把html5.enable設(shè)成true就可以了。
如果想升級(jí)到HTML 5,那么現(xiàn)在就是時(shí)候。因?yàn)镠TML 5是HTML 4和XHTML 1提供的功能的超集,所以升級(jí)是非常容易的。只需要把目前的(X)HTML文檔類型聲明換成HTML 5文檔類型就可以了。
<!DOCTYPE html>你可以從HTML 5 Doctor網(wǎng)站中找到如何讓新的HTML 5元素在所有瀏覽器上都工作的細(xì)節(jié)。