DTD的作用


在介紹DTD的作用之前先介紹一下SGML:
SGML SGML(Standard Generalized Markup Language,標准通用標記語言),是一種定義電子文檔結構和描述其內容的國際標准語言,是所有電子文檔標記語言的起源,
早在Web發明之前SGML就已存在. SGML是1986年出版發布的一個信息管理方面的國際標准(ISO 8879)。該標准定義獨立於平台和應用的文本文檔的格式、索引和鏈接信息,
為用戶提供一種類似於語法的機制,用來定義文檔的結構和指示文檔結構的標簽。

DTD的作用——文檔規范與呈現模式

1. DTD在頁面中的作用

 

①DTD(Document Type Definition文檔類型定義)是一組機器可讀的規則,它們定義XMLHTML的特定版本中允許有什么,不允許有什么。在解析網頁時,瀏覽器將使用這些規則檢查頁面的有效性並且采取相應的措施。(由DTD中定義的文檔類型影響)

②DTD是對HTML文檔聲明,還會影響瀏覽器的渲染模式(工作模式)。(由頁面中書寫DTD的方式影響)

 舉個例子:

<P align="center">這是一個居中段落</P>
在XHTML中,標記是區分大小寫的,上面的代碼毫無意義。可在HTML中它是一個居中段落。瀏覽器是怎樣處理這種情況呢?難道瀏覽器認為你寫的是HTML,然后把它作為             一個居中段落顯示?如是你寫的是XHTML呢,它將是一段不可顯示的代碼!瀏覽器是怎樣知道你用的是什么標記語言然后正確對待這段代碼呢?
這就是DTD的工作了。一個DTD應該放在每一個文檔的第一行。這樣正確地放置,你的DTD才能告訴瀏覽器的用的是什么標記語言。在通常情況下,如果你編寫的是正確       代碼,並擁有一個合適的DTD,瀏覽器將會根據W3C的標准顯示你的代碼。
如果說你沒有使用DTD,你將很難預測瀏覽器是怎樣顯示你的代碼,僅僅在同一瀏覽器就有不同的顯示效果。盡管你的網頁做得非常飄亮,要是沒有使用DTD,你的努力也是白費的。因此,一個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的文檔,一般也以標准模式呈現。

含過渡DTDURIDOCTYPE,一般以標准模式呈現。

含過渡DTD但沒有URIDOCTYPE,會以混雜模式呈現。

⑤DOCTYPE不存在或不正確會導致HTMLXHTML文檔以混雜模式呈現。

★具體呈現模式參見: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來規范瀏覽器的行為(讓瀏覽器按照它們應該的方式來運行)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM