上一篇文章主要講述了HTML文件的構成,同時膚淺地接觸了「標籤省略」這個概念,本文會從概念上介紹HTML文件中第一個出現的重要元素- DOCTYPE。透過一種特定的語法,作為一種元數據,來描述XML文件中允許出現的元素,以及各元素的組成、嵌套規則等。
##但是在HTML中,DOCTYPE又有著一些不同的效果,其中之一就是著名的觸發瀏覽器標準模式的功能。。
在HTML4的標準中,每一個DOCTYPE對應的dtd檔案都是有合法的URL指定的,可以透過網路下載。瀏覽器可以根據URL取得到dtd的具體內容,並根據內容的規定來解析文件。 現實是不同的
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> <html> <head> <title>I'm not a frameset</title> </head> <body> <p>So what?</p> </body> </html>
這個文檔採用了一個框架模式的DOCTYPE,但其正文確沒有使用任何<frame>
元素,相對應地使用了應該由嚴格模式或過渡模式指定的,標準的HTML結構。那麼在這種情況下,瀏覽器能做什麼呢?
這就是所謂的瀏覽器的“容錯性”,事實上無論你的DOCTYPE是什麼,瀏覽器都會以最大的兼容能力去解析一個文檔,並以最大的努力讓這個文檔顯示得符合開發者的預期。而瀏覽器的這項特性,也逐漸讓標準制定者開始意識到,DOCTYPE似乎真的不太重要。因此,在HTML5
中,DOCTYPE發生了重大的變化…
到了HTML5了,這一變化相信多數人已經知道,就是HTML5將DOCTYPE的聲明簡化了,只需要
<!DOCTYPE html>正好前文所述,在HTML4時代,標準制定者已經認識到,DOCTYPE對瀏覽器的渲染並沒有太大的幫助,除了給無聊的w3c
驗證器看以外,DOCTYPE似乎只有觸發瀏覽器相容模式的作用。於是標準工作小組採取了非常實際的態度,測試了所有課程順觸發標準模式的最簡DOCTYPE,最終得出了這個結論。 但是故事不會這麼簡單,標準工作組也不是完成這麼簡單的動作就撒手不管的無賴分子,事實上他們還是很盡責任地考慮到了向後兼容性、可擴展性等一系列的事情,最後將DOCTYPE一章用了大量文字來進行描述,得到一個非常詳實的結果。
HTML5的參考手冊相關章節中,將DOCTYPE分為3類:
#普通DOCTYPE就是我們所見的最簡形式,即<!DOCTYPE html>
,他的真正組成是這樣的:
,大小寫不敏感。
1個或多個空格,關於空格的定義請參考簡介中的解釋。
字元HTML
,同樣大小寫不敏感。
1個或多個空格。
結束標記,即>。 </p>
<li><p>不再推薦的DOCTYPE - deprecated doctype</p></li>
<li>
<p>即所謂HTML4時代的幾個DOCTYPE,其組成如下:</p>
<p>在標準中,Public ID和System ID是有嚴格的對應關係的,如果規定的System ID不能有Public ID,則上面的第8項可選內容也就不能存在。 HTML5徹底放棄了HTML4中的過渡型和框架型的DOCTYPE,同時整合了XHTML的DOCTYPE聲明,得出以下6種組合方式:</p>
</li>
<ul class=" list-paddingleft-2" style="list-style-type: square;">
<li><p><code>< ;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">
##
,同樣大小寫不敏感。
,大小寫不敏感。
。
比如這樣的DOCTYPE就屬於此類:
< ;!doctype HTML system "about:legacy-compat">,基本上除了大小寫,沒有什麼值得改變的。
,同樣大小寫不敏感。
,大小寫不敏感。
,注意這段文字是大小寫敏感
的。
。
以上是HTML5標準學習-DOCTYPE頭部分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!