HTML4,HTML5,XHTML 之間有什麼區別?
我來從HTML的歷史談談他們3者的區別。
在HTML的早期發展中,W3C成立之前,很多標準的制定都是在瀏覽器的開發者們互相討論的情況下完成的,比如HTML 2.0, 3.2直到4.0, 4.01,這些標準大部分都是所謂的retro-spec,即先有實現後有標準。在這種情況下,HTML標準不是很規範,瀏覽器也對HTML頁面中的錯誤相當寬容。這反過來又導致了HTML作者寫出了大量的含有錯誤的HTML頁面。據說,時至今日web上99%的頁面都含有HTML錯誤。
W3C隨後意識到了這個問題,並認為這是互聯網的一個基礎性問題,應該加以解決。為了規範HTML,W3C結合XML制定了XHTML 1.0標準,這個標準沒有增加任何新的tag,只是按照XML的要求來規範HTML,並定義了一個新的MIME type,application/xhtml+xml。W3C的初衷是對這個MIME type瀏覽器要實行強錯誤檢查,既如果頁面有HTML錯誤,就要顯示錯誤信息。但是由於已有的web頁面中已經有了大量的錯誤,很多開發者拒絕使用新的MIME type。W3C不得已,在XHTML 1.0的標準之後加了一個附錄C,允許開發者使用XHTML語法來寫頁面,同時使用舊的MIME type,application/html,來分發頁面。這箇舊的MIME type不會觸發瀏覽器的強錯誤檢查。這就是我們今天看到的情況,很多網站宣稱自己遵守XHTML 1.0標準,那隻不過是說,他的頁面中用了XHTML語法,但並不能保證完全沒有錯誤。要驗證XHTML有沒有真正起效,需要查看web伺服器使用哪種MIME type來分發頁面的。
W3C隨後在XHTML 1.1中取消了附錄C,即使用XHTML 1.1標準的頁面必須用新的MIME type來分發。於是這個標準並沒有很多人採用。這種情況同樣發生在尚未完成的XHTML 2.0身上,它要求強錯誤檢查,於是沒有人採用。XHTML的故事也告訴我們,有時候先有標準再來實現,是行不通的。
有了XHTML的教訓,WHAT Working Group和W3C在制定下一代HTML標準,也就是HTML5的時候,就將向後兼容作為了一個很重要的原則。HTML5確實引入了許多新的特性,但是它最重要的一個特性是,不會break已有的網頁。你可以將任何已有的網頁的第一行改成&,它就成也一個HTML5頁面,並且可以照樣在瀏覽器里正常的展示。
HTML4是目前互聯網上使用最廣泛的標準,成於1999年左右。
HTML5是很有野心的下一代標準,因為4之後已經有十幾年的時間了,這十幾年也是互聯網飛速發展的時期,因此很多應用場景,4不支持或者使用基於4的技術體系實現起來很費勁,需要插件,walkaround等等。 HTML5已經遠遠超越了標記語言的範疇,其背後是一組技術集。最基本的就是更富語義的標籤,以便更好的被機器識別;
Canvas+WEBGL等技術,實現無插件的動畫以及圖像、圖形處理能力; 本地存儲,可實現offline應用; websocket,一改http的純pull模型,實現數據推送的夢想; MathML,SVG等,支持更加豐富的render;我覺得HTML5的好處還在於對跨瀏覽器方面的推動,因為4時代,由於語言本身的弱,導致了瀏覽器各自為政擴展開發了很多特性,導致瀏覽器之間不兼容,跨瀏覽器的應用開發是一件十分令人頭疼的事情。
HTML5是標準與實現同步在推,w3c聲明,將來標準完成之時,就至少會有兩種瀏覽器能夠完全支持標準,目前來看,情況還比較樂觀。 xhtml是HTML的規範版,個人是這麼理解的,目前提的少了。請看大屏幕···················
反正我所理解的就是這樣的關係。
對於html,有廣義和狹義的理解。廣義的一般把css和js也算進來了,狹義的就是純html標籤。提問者既然把xhtml也拉進來了,應該是從狹義的方面理解。
首先,xhtml可以理解為html+xml,就是用xml的語法來規範html。其實早期html語言是比較散漫的,像&1234532是可以被遊覽器正常解析的。後來就引入的xhtml和相應的dtd,來將html語言規範化,結構化。後來還出現了xhtml 2,不過事實證明是個眼子。
這裡有個早期的漫畫,可以幫助理解兩者關係:http://www.cnbeta.com/articles/89882.htm至於html4和html5,其實從標籤的角度來說,就是向著更加語義化的方面演進。像媒體比較熱炒的canvas標籤,也主要是從js的角度去處理,作為一般的前端開發,接觸得應該不會很多。ps:有沒有覺得canvas很像以前dos時期的小烏龜……o(-"-)o推薦閱讀:
※<time>標籤裡面的時間有什麼實際意義?
※設計網頁時如何考慮多餘空白區域?
※如何在移動端實現純css的自定義布局?
※靜態資源(JS/CSS)存儲在localStorage有什麼缺點?為什麼沒有被廣泛應用?
※HTML5 或者JS可以獲取移動設備信息嗎?或者其他非開發語言的方法?