在介紹DTD的作用之前先介紹一下SGML:
SGML SGML(Standard Generalized Markup Language,標准通用標記語言),是一種定義電子文檔結構和描述其內容的國際標准語言,是所有電子文檔標記語言的起源,
早在Web發明之前SGML就已存在. SGML是1986年出版發布的一個信息管理方面的國際標准(ISO 8879)。該標准定義獨立於平台和應用的文本文檔的格式、索引和鏈接信息,
為用戶提供一種類似於語法的機制,用來定義文檔的結構和指示文檔結構的標簽。
DTD的作用——文檔規范與呈現模式
1. DTD在頁面中的作用
①DTD(Document Type Definition文檔類型定義)是一組機器可讀的規則,它們定義XML或HTML的特定版本中允許有什么,不允許有什么。在解析網頁時,瀏覽器將使用這些規則檢查頁面的有效性並且采取相應的措施。(由DTD中定義的文檔類型影響)
②DTD是對HTML文檔聲明,還會影響瀏覽器的渲染模式(工作模式)。(由頁面中書寫DTD的方式影響)
舉個例子:
2. DTD規定XML或HTML中的標簽和語法
1)HTML 4.01規定了三種文檔類型:Strict、Transitional 以及 Frameset
①STRICT(嚴格類型):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
②TRANSITIONAL(過渡類型):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
③FRAMESET(框架類型):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
2)XHTML 1.0 規定了三種 XML 文檔類型:Strict、Transitional 以及 Frameset。
①STRICT(嚴格類型):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
②TRANSITIONAL(過渡類型):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
③FRAMESET(框架類型):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
3)HTML5只規定了一種文檔類型:
<!DOCTYPE HTML>
3. DTD會影響瀏覽器的渲染模式:
1)瀏覽器的渲染模式:
①標准模式(又叫嚴格模式,Standards mode 或者 Strict mode)。
②混雜模式(又叫怪異模式,Quirks mode):對頁面的處理方式永久凍結在IE5.5,主要體現盒模型的差異。
③近似標准模式(又叫准標准模式,Almost Stands Mode):從字面意思上看與標准模式非常類似,但確實有小的差別。主要體現在對於表格單元格內垂直方向布局渲染差異。
2)DTD的不同導致渲染模式的不同
①XHTML文檔包含形式完整的DOCTYPE,一般以標准模式呈現。
②HTML4.01文檔,包含嚴格DTD的文檔,一般也以標准模式呈現。
③含過渡DTD和URI的DOCTYPE,一般以標准模式呈現。
④含過渡DTD但沒有URI的DOCTYPE,會以混雜模式呈現。
⑤DOCTYPE不存在或不正確會導致HTML和XHTML文檔以混雜模式呈現。
★具體呈現模式參見:http://hsivonen.iki.fi/doctype/
4. JavaScript中關於呈現模式的返回結果:
在 HTML5 草案中,更加明確的規定了模式的定義:
| 傳統名稱 |
HTML5 草案名稱 |
document.compatMode 返回值 |
| standards mode 或者 strict mode |
no-quirks mode |
CSS1Compat |
| almost standards mode |
limited-quirks mode |
CSS1Compat |
| quirks mode |
quirks mode |
BackCompat |
注:HTML5 草案關於 compatMode 的介紹:3.1.3 Resource metadata management
5. HTML5中,無需定義DTD的URL原因
1)HTML4.01和XHTML
①DTD 規定了使用通用標記語言(SGML)的網頁的語法。
②諸如 HTML 這樣的通用標記語言應該使用 DTD 來規定應用於某種特定文檔中的標簽的規則,這些規則包括一系列的元素和實體的聲明。
③在通用標記語言(SGML)的文檔類型聲明或 DTD 中,XHTML 被詳細地進行了描述。
④XHTML DTD 使用精確的可被計算機讀取的語言來描述合法的 XHTML 標記的語法和句法。
2)HTML4.01中的doctype需要對DTD進行引用,因為HTML4.01基於SGML。而HTML 5不基於SGML,因此不需要對DTD進行引用,但是需要doctype來規范瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行)。
