本節書摘來自異步社群《html5+css3網頁設計入門必讀》一書中的第2章,第2.4節,作者: 【英】jeremy keith , 【美】dan cederholm 更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。
文檔類型聲明(document type declaration)簡稱為doctype,一直用于指定文檔所編寫的标記類型。
html 4.01的 doctype如下所示(»為自動換行标記):
xhtml 1.0 的doctype如下所示:
這些doctype看起來并不易讀,但它們以其獨特的方式簡單地說明了:“該文檔用html 4.01編寫”或“該文檔用xhtml 1.0編寫”。
如果doctype聲稱“該文檔用html5編寫”,那麼按道理其中應該會出現數字5。但事實并非如此。html5的doctype如下所示:
該doctype是如此之短,甚至可以讓人将其背誦下來。
這實在是太不可思議了!如果 doctype中不含有版本号,那麼該如何指定其他版本的html呢?
第一次看到html5的doctype的時候,我認為這是高度傲慢的結果。心想:“難道他們真相信這就是标記規範的最終版了嗎?”
然而事實上,html5的doctype是非常務實的。由于html5需要支援現有内容,是以其doctype可以應用于現有的html 4.01文檔和xhtml 1.0文檔。任何未來版本的html也需要支援html5中的現有内容,是以應用版本号來标記文檔的觀念是有缺陷的。
事實上,doctype并不那麼重要。假設需要為一個文檔提供html 4.01的doctype。如果該文檔中包含來自另一個規範的元素,如html 3.2或html5,那麼浏覽器将仍然呈現該文檔的這一部分。這是因為浏覽器支援的是特性,而非doctype。
起初,文檔類型聲明(document type declaration)是為驗證器而非為浏覽器而設計的。浏覽器僅在“doctype轉換”的情況下才會關注doctype——“doctype轉換”(doctypy switching)是一個聰明的小黑客,它根據是否存在合适的doctype來轉換顯示模式,即怪異模式(quirks mode)或标準模式(standard mode)。
為了確定浏覽器以标準模式顯示,至少需要html5的doctype。事實上,這是包含doctype的唯一原因。不用html5的doctype編寫的html文檔仍然是有效的html5。