萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 網頁製作 >> 互動設計

DOCTYPE 深度解析:從 DTD 選擇到 HTML5 簡寫的演進

聲明位於文檔最前端,在 標籤之前,用於告知瀏覽器文檔遵循哪種 HTML 或 XHTML 規範。它可聲明三種 DTD 類型:嚴格版、過渡版、框架版。若文檔標記不符合聲明的 DTD,不僅無法通過代碼驗證,還可能導致瀏覽器渲染異常。

語法結構解析

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

上例中,根元素為 html,公共標識符為 "-//W3C//DTD XHTML 1.0 Strict//EN"。瀏覽器會尋找匹配的 DTD,找不到則使用 URL 定位。關鍵字段含義:

  • -:組織名稱未註冊(IETF、W3C 非 ISO 註冊組織);+ 為已註冊。
  • DTD:公開文本類別,預設為 DTD。
  • HTML:公開文本描述,可附版本號,預設為 HTML。
  • URL:引用對象位置。
  • Strict:排除 W3C 擬淘汰的呈現屬性與元素。

HTML 4.01 三種文檔類型

  1. Strict DTD:乾淨標記,無呈現層混亂。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "https://www.w3.org/TR/html4/strict.dtd">
  2. Transitional DTD:包含 W3C 擬移入樣式表的呈現屬性/元素,適用於不支援 CSS 的舊瀏覽器。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
  3. Frameset DTD:用於框架文檔,frameset 取代 body,其餘同 Transitional。
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "https://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0 三種 XML 文檔類型

  1. Strict:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. Transitional:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. Frameset:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

如何選擇正確的 DOCTYPE

關鍵在於讓 DTD 與文檔遵循的標準對應。若文檔遵循 XHTML 1.0 Strict,聲明必須引用對應 DTD;混用會導致不匹配。若無有效聲明,瀏覽器會使用內建預設 DTD 嘗試渲染(通常是寫得很糟的頁面才會觸發)。

主流大站(京東、淘寶、博客園)多採用 XHTML 1.0 Transitional,但百度、Google 已改用 <!doctype html>。因 HTML5 不基於 SGML,無需引用 DTD,僅需 DOCTYPE 觸發瀏覽器標準模式。建議今後直接使用 <!doctype html>,開啟標準兼容模式,雖不保證兼容 IE6 以前版本,但已是最佳實踐。

小知識

  • XHTML 1 是 HTML 4.01 的 XML 化,不向前兼容。
  • HTML 4.01 基於 SGML,需引用 DTD;SGML 規定了標記標準格式與文檔結構描述方法,HTML 即固定標籤集的 SGML 文檔。
copyright © 萬盛學電腦網 all rights reserved