DTD(Document Type Definition)是一個XML文檔,解釋了哪些標籤、屬性或值對於HTML的一個特定類型是有效的。 HTML遵循一定的規則。這些規則包含在一個文檔類型定義(Document Type Definition)文件中,或如大家所知的DTD。每一個HTML版本,都有一個對應的DTD。現在你可能會問:「所有這些和CSS又有什麼關係呢?」
如果想讓網頁中的所有內容都在網頁瀏覽器上正確、一致地顯示,就得告訴網頁瀏覽器你正使用HTML或者XHTML的哪個版本,包括一個網頁開頭處的文檔類型宣告(doctype declaration)是什麼意思。這個文件類型宣告是在HTML檔案的第一行,不只定義你正使用的HTML版本(例如HTML 4.01 Transitional),而且指向網頁中適當的DTD檔案。當鍵錯文檔宣告時,你會使大部分瀏覽器進入一個叫做怪異模式(Quirks Mode)(譯註1)的警告狀態。
怪異模式(Quirks Mode)是瀏覽器製造商為使他們的軟體運行起來就像大約1999年(Netscape 4和Internet Explorer 5時代)時的瀏覽器所採用的方法。如果一個現代瀏覽器遇到一張沒有正確文檔類型的網頁,它就會以為:「嗯,這張網頁一定是很早很早以前用HTML編輯器寫的。我得假裝自己是一個真正很舊的瀏覽器來顯示網頁,就像那些bug重重的舊瀏覽器所顯示的那樣。它根據目前的標準所應該顯示的樣子。當你在瀏覽器上偵測時,無意中用怪異模式(Quirks Mode)瀏覽到你的網頁,你可能會停止嘗試去修正與不正確的文檔類型有關、而不是不正當使用HTML或CSS所引起的顯示問題。
所幸的是,獲得正確的文檔類型很簡單。你所要知道的就是正在使用哪個HTML版本。目前最受歡迎的HTML和XHTML的版本是HTML 4.01 Transitional和XHTML 1.0 Transitional。這些HTML類型仍然讓你使用展示型的標籤,例如標籤,在這方面也提供一個從舊版HTML到新版HTML的轉換:更嚴格的HTML和XHTML標籤。雖然最好不要使用這些標籤,但它們在Transitional版中仍然起作用,因此你可以根據自己的情況,逐步淘汰這些舊式標籤。在嚴格版的HTML和XHTML中,有些舊式標籤根本不起作用。
註:一般來說,HTML和XHTML的嚴格版均不接受僅使網頁展現效果好看的標籤和屬性,如標籤和一個段落的置中屬性。它們也不接受一些曾經流行的屬性,例如連結的目標屬性——讓你在一個新視窗中開啟連結。