Html-文件型別(DTD)和DOCTYPE

文藝小青年發表於2017-08-10

在正式介紹文件型別(DTD)和DOCTYPE之前,我們需要先了解HTML和XHTML的之間的區別,現在Html5已經慢慢的成為主流,之前的數十年一直都是Html4.01的天下,Html4.01於1999年成為標準後一直成為大多數人使用的Html版本。2000年的時候W3C釋出了HTML4.01的XML版命名為XHTML1.0。Html4.01和XHTML1.0之間主要的區別就是遵守XML編碼約定,標籤閉合就是XML基礎規範。XHTML1.1作為後來者更接近XML,但是跟XHTML1.0相比,XHTML1.0可以作為Html文件,XHTML1.1頁面是作為XML傳送給瀏覽器,即使XHTML1.1中只含有一個錯誤(未編碼的&的符號),web瀏覽器無法顯示頁面,因為XHTML1.1不受歡迎。

Html5和XHTML2

Html是一種基於標準通用標記語言(SGML)的應用,XHTML則基於可擴充套件標記語言(XML),HTML和XHTML其實是平行發展的兩個標準。本質上說,XHTML是一個過渡技術,結合了部分XML的強大功能及大多數HTML的簡單特性。建立XHTML的目的就是實現HTML向XML的過渡。XML設計用來傳送及攜帶資料資訊,不用來表現或展示資料,HTML語言則用來表現資料。

XHTML只是在內容結構上改進原有的HTML系統,XHTML2.0也僅僅在XHTML1.1的基礎上更加註重頁面規範和可用性,缺乏互動性。在Web App大行其道的年代,XHTML2就不合時宜了,於是就催生了HTML5。W3C無視Web設計人員的需求,僅從理論角度閉門造車,卻扛著標準的大旗,引發了來自Opera、Apple以及Mozilla等瀏覽器廠商的反對聲音。2004年,他們組建了一個以推動網路HTML5標準為目的的組織——網頁超文字技術工作小組(Web Hypertext Application Technology Working Group,縮寫為WHATWG)。
 
Html5目標是取代HTML4.01和XHTML1.0標準,旨在提高網頁效能,增加頁面互動。Html5吸取了XHTML2一些建議,包括一些用來改善文件結構的功能,比如,新的HTML標籤header、footer、dialog、aside、figure等的使用,將使內容創作者更加語義地建立文件,之前的開發者在這些場合是一律使用div的。
 
W3C與WHATWG雙方經過多年努力,終於在2006年達成妥協。2006年10月,Web之父、全球資訊網聯盟(W3C)主席、美國國家科學院院士蒂姆·伯納斯-李(Tim Berners-Lee)發表了一篇部落格文章表示,從HTML走向XML的路是行不通的(XHTML is dead)。2009年W3C明智的放棄了改進XHTML2.0標準的計劃,選擇了WHATWG的成果作為基礎。事實上,XHTML在2002年更新之後的數年時間裡,儘管發現了眾多問題,但都沒有去修改過。W3C在2014年10月29日,Html5標準規範終於制定完成。

文件型別(DTD)和DOCTYPE

文件型別定義(Document Type Definition)是一套關於標記符的語法規則,定義了XML或者HTML的特定版本中允許有什麼,不允許有什麼,在渲染解析頁面的時候瀏覽器會根據這些規則檢查頁面的有效性並且採取相應的措施。關於DOCTYPE的三種風格,嚴格(strict),過渡(transitional)和框架集(frameset)。<!DOCTYPE> 宣告必須是 HTML 文件的第一行,位於 <html> 標籤之前。

Html4.01 和XHTML1.0:

strict模式:

1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

過渡(transitional)模式:

1
2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

框架集(frameset):

1
2
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
1
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

框架集(frameset)用的情況比較少,strict風格的 DTD 包含所有 HTML 元素和屬性,但不包括展示性的和棄用的元素(比如 font),過渡(transitional)風格的DTD仍然使用已經廢棄的元素,但是Html5中就不需要這麼複雜了,只有一個DOCTYPE:

1
<!DOCTYPE html>

瀏覽器廠商建立與標準相容的瀏覽器時,他們希望確定向後相容性,為了實現這一點他們建立兩種呈現模式,標準模式和混雜模式(quirks mode),在標準模式中,瀏覽器根據規範呈現頁面,在混雜模式中,頁面以一種比較寬鬆的向後相容的方式顯示。Html4.01中的如果包含DTD的DOCTYPE都是以標準模式呈現,如果DOCTYPE不存在或者形式不正確會HTML和XHTML文件以混雜模式呈現。


本文轉自Fly_Elephant部落格園部落格,原文連結:http://www.cnblogs.com/xiaofeixiang/p/5027746.html,如需轉載請自行聯絡原作者


相關文章