在正式介紹文檔類型(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語言則用來表現數據。
文檔類型(DTD)和DOCTYPE
文檔類型定義(Document Type Definition)是一套關於標記符的語法規則,定義了XML或者HTML的特定版本中允許有什么,不允許有什么,在渲染解析頁面的時候瀏覽器會根據這些規則檢查頁面的有效性並且采取相應的措施。關於DOCTYPE的三種風格,嚴格(strict),過渡(transitional)和框架集(frameset)。<!DOCTYPE> 聲明必須是 HTML 文檔的第一行,位於 <html> 標簽之前。
Html4.01 和XHTML1.0:
strict模式:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!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 HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!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 HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<!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:
<!DOCTYPE html>
瀏覽器廠商創建與標准兼容的瀏覽器時,他們希望確定向后兼容性,為了實現這一點他們創建兩種呈現模式,標准模式和混雜模式(quirks mode),在標准模式中,瀏覽器根據規范呈現頁面,在混雜模式中,頁面以一種比較寬松的向后兼容的方式顯示。Html4.01中的如果包含DTD的DOCTYPE都是以標准模式呈現,如果DOCTYPE不存在或者形式不正確會HTML和XHTML文檔以混雜模式呈現。