DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> HTML基礎知識 >> HTML和Xhtml >> DTD文檔類型聲明doctype
DTD文檔類型聲明doctype
編輯:HTML和Xhtml     

網頁制作poluoluo文章簡介:在web標准的道路上,我們不僅需要充滿現實主義向前兼容,更需要充滿理想主義的向後兼容,這是保證我們的web能在未來正常工作的希望。

HTML是萬維網上發布超文本的通用語言[1]。從1982年Tim Berners-Lee簡化SGML建立HTML的原始定義到2001年發布XHTML1.1規范,HTML成為了有多個版本的國際標准[2]。各版本的規范都用一種機器可讀的語言定義,它描述了法定結構、元素和屬性,這就是文檔類型定義(Document Type Definition),簡稱DTD。

相關文章:HTML代碼學習:DOCTYPE的縮寫

DTD描述了文檔類型聲明(DTD declaration,簡稱doctype[3])位於HTML文檔最前面,它是聯系文檔和DTD指令。比如HTML4.01 Strict的doctype是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">

它指明了文檔使用的HTML版本,這是諸如浏覽器之類的工具解析文檔時最需要的信息。比如W3C的驗證工具可依據它來檢查語法和指出錯誤。

早期浏覽器對標准的錯誤實現、私有擴展的大量滋生和為了向前兼容以及早期標准本身的混亂等導致了那時的文檔既沒有doctype也沒有對DTD的直接引用,也導致了新的標准難以得到應用和普及,因為浏覽器無法區分它們。為了處理根據Web標准創作的網頁和根據陳舊實踐創作的網頁,Todd Fahrner 在1998年提出了“came up with a toggle”方法[4]能允許浏覽器提供兩套渲染模式: 即有完整的doctype的文檔使用W3C的標准進行解析,否則使用舊的方式解析。

這個方法符合實際且簡單有效。兩年後,Mac版IE上首次運用,很快的其他浏覽器制造商紛紛采用, 這就誕生了doctype嗅探(doctype sniffing或doctype switching)。浏覽器通過它來決定其引擎應該采用標准模式、准標准模式還是怪癖模式,這將對HTML和CSS的解析、CSS布局及JavaScript腳本產生非常大的影響[5] 。毫無疑問,我們應該盡可能的采用標准模式。

HTML5雖然還處於草案中,但最新浏覽器Firefox3.5、Chrome2、Safari4和IE8已經開始支持部分特性,特別是Google Wave的發布掀起了推進HTML5實踐的新高潮。HTML5並不基於SGML也沒有DTD,但它為了向前兼容,接受了doctype嗅探這個事實,定義了在text/html中doctype是唯一的模式轉換聲明,除此外沒有什麼用處。其doctype如此簡潔:<!doctype html>[6]

值得一提的是IE8為了解決向前兼容采用了X-UA-Compatible聲明[7],導致在IE8中浏覽器的渲染模式不僅僅取決於doctype嗅探還取決於X-UA-Compatible聲明,這個不僅僅導致了模式判斷更加復雜[8],也違背了web設計的逐漸增強(progressive enhancement)思想[9]

在web標准的道路上,我們不僅需要充滿現實主義向前兼容,更需要充滿理想主義的向後兼容,這是保證我們的web能在未來正常工作的希望。在標准、簡單和逐漸增強的思想下,現在我們頁面的最佳方案或許是:

<!doctype html>
…
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
…

注釋:

  • [1] HTML is the lingua franca for publishing hypertext on the World Wide Web
  • [2] http://zh.wikipedia.org/wiki/Html
  • [3] DTD declaration在以前規范中也常叫Document Type Declaration,很容易和DTD混淆。
  • [4] http://web.archive.org/web/20030212115103/http://www.geocrawler.com/archives/list-name.mbox/123/1998/7/0/1037920/
  • [5] 用doctype激活浏覽器模式
  • [6] http://www.w3.org/TR/html5/syntax.html#the-doctype
  • [7] 超越文檔類型,web標准化向前兼容和IE8
  • [8] http://dancewithnet.com/2009/06/14/activating-browser-modes-with-doctype/#ie8modes
  • [9] Web標准前途是否依賴浏覽器技術

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved