HTML-文件型別(DTD)和DOCTYPE
在正式介紹文件型別(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。文件型別(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"> |
2 | <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
過渡(transitional)模式:
1 | <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
2 | <! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
框架集(frameset):
1 | <! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd"> |
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文件以混雜模式呈現。