引言
HTML(Hypertext Markup Language)中文名稱為"超文本标記語言",它遵循"網際網路聯盟(W3C)"定義的結構規範,在HTML5之前的版本中,W3C将HTML定義為"标準通用标記語言(SGML,Standard Generalized Markup Language)"的一種應用;而SGML是一種定義标記語言的技術,它通過"文檔類型定義(DTD,Document Type Definition)"的形式來指定允許的文檔結構,浏覽器按照SGML中定義的"DTD規範"來呈現HTML文檔的内容。
文章目錄
0×1.HTML發展曆程
HTML标準版本有:Html2.0、HTML3.2、HTML4.0、HTML4.01、HTML5(它并不是基于SGML或XML定義的,而是類似英文散文規範的形式)。
HTML1并不曾存在,也沒有人知道它為什麼不存在,也許存在過,在實驗室裡;HTML的第一個官方版本是由IETF(網際網路工程任務組)推出的HTML2.0,後來W3C取代IETF的角色,成為HTML的标準組織,1990年代的後半頁,HTML的版本被頻繁修改,直到1999年HTML4.01的出現,至此,HTML到達了它誕生以來第一個命運的轉折點;
W3C在HTML4.01之後釋出的第一個修訂版本是XHTML1.0,其中X代表"eXtensible"(擴充),當然也有人将之解讀為 "eXtreme"(極端);XHTML1.0是基于HTML4.01的,并沒有引入任何新标簽或屬性,唯一的差別是,HTML文法比較随便,而XHTML則要求XML般的嚴格文法,這種嚴格的标準已經惹怒了當時的一部分開發者;XHTML1.0的推出剛好碰上了CSS的崛起,如果說XHTML1.0是XML風格的HTML,那麼後來的修訂版XHTML1.1則是貨真價實的XML;
緊随其後W3C釋出了第二個修訂版XHTML2,它不向前相容,甚至不相容之前的HTML;W3C将它定義成一種全新的語言,對于HTML開發者來說這是一場災難,忍無可忍的開發者們決定放棄W3C制定的标準,他們投奔了另外一個組織WHATWG,而WHATWG研發了一種新的HTML标準,他們将它命名為HTML 5;
在WHATWG緻力于HTML5的同時,W3C繼續着他們的XHTML2.0;然而,他們卻慢慢的陷入了困境,幾個月後,W3C組建了一個新的HTML工作組,他們非常明智的選擇了WHATWG的成果作為基礎;這一轉變帶來了一些困惑,W3C同時進行着兩套規範,XHTML2和HTML 5(注意,W3C的HTTML 5在5之前有個空格,而WHATWG的HTML5則沒有空格),而與此同時WHATWG也在進行着同樣的工作;
這一混亂局面到了2009年才開始變得清晰,W3C宣布終止XHTML2的工作,這是一份關于XHTML2遲到的訃告,也正式宣布了HTML5走上曆史的舞台,成為當今最主流的HTML标準規範。
0×2.DOCTYPE标簽
我們随便在浏覽器中打開一個網頁,右擊頁面"顯示源代碼",在源代碼的最頂部,會看到一個DOCTYPE标簽,它的目的是告訴浏覽器解析器,應該使用什麼樣的文檔類型定義來解析文檔。
在HTML4.01中,必須在DOCTYPE聲明引用 DTD,因為HTML4.01基于SGML,DTD規定了标記語言的規則,這樣浏覽器才能正确地呈現内容;HTML5不基于SGML,是以不需要引用 DTD。
現如今,絕大多數的網頁檢視源代碼都會在頂部看到下面這一行标記,這說明頁面使用的是HTML5規範:
處于曆史原因,介紹一下HTML4.01的三種DOCTYPE聲明,随着HTML5的普及,這些聲明可能會慢慢被淘汰:
HTML4.01 Strict:該DTD包含所有HTML元素和屬性,但不包括展示性的和棄用的元素(比如 font),不允許架構集(Framesets)。
HTML4.01 Transitional:該DTD包含所有HTML 元素和屬性,包括展示性的和棄用的元素(比如 font),不允許架構集(Framesets)。
HTML4.01 Frameset:該DTD等同于HTML4.01 Transitional,但允許架構集内容。