正确理解HTML,XHTML页面的头部doctype定义
當我們制作頁面的時候,總會在它的源代碼頭部看到一串聲明,比方最常見的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
假設我們把這些代碼去掉,會發現頁面可能會有比較明顯的變化,由于這樣造成了有些樣式的表現不一樣。
這些代碼我們稱做DOCTYPE聲明。DOCTYPE是document type(文檔類型)的簡寫,用來說明你用的XHTML或者HTML是什么版本號。DOCTYPE聲明必須放在每個XHTML文檔最頂部,在全部代碼和標識之上。
當中的DTD(比如上例中的xhtml1-transitional.dtd)叫文檔類型定義。里面包括了文檔的規則,瀏覽器就依據你定義的DTD來解釋你頁面的標識。并展現出來。
要建立符合標準的網頁,DOCTYPE聲明是不可缺少的關鍵組成部分;除非你的XHTML確定了一個正確的DOCTYPE,否則你的標識和CSS都不會生效。
XHTML 1.0 提供了三種DTD聲明可供選擇:
過渡的(Transitional):要求很寬松的DTD,它同意你繼續使用HTML4.01的標識(可是要符合xhtml的寫法)。完整代碼例如以下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
嚴格的(Strict):要求嚴格的DTD,你不能使用不論什么表現層的標識和屬性。比如
。完整代碼例如以下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
框架的(Frameset):專門針對框架頁面設計使用的DTD,假設你的頁面中包括有框架,須要採用這樣的DTD。
完整代碼例如以下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
理想情況當然是嚴格的DTD,但對于我們大多數剛接觸web標準的設計師來說。過渡的DTD(XHTML 1.0 Transitional)是眼下理想選擇。由于這樣的DTD還同意我們使用表現層的標識、元素和屬性。也比較easy通過W3C的代碼校驗。
==========================以下原創====================
正如我們理解的那樣,上面的我們最??匆姷慕忉屃?
可是今天我看到了一本外國文檔,它的解釋讓一切變得是那么的簡單,這非常能說明國內的翻譯人員大多故弄玄虛,將簡單的學問搞復雜.好了不多說了.開始sharing.
為什么MIME 類型非常重要,為什么我老是想起他們?
三個字:(draconian error handing)嚴格的錯誤處理.瀏覽器一直都是"寬容HTML的錯誤的".假設你在創建一個HTML頁面的時候忘記了
<title>標簽,瀏覽器也是照樣能夠顯示你的html內容.雖然<title>元素不論什么版本號的HTML中都是一直要求出如今頁面中的.相同,假設你在頁面中使用了一些不同意的標簽時,瀏覽器也會盡可能的解釋它,而且不會報出錯誤.
可能這正是你所期待的,其實這些殘缺的標簽可以在瀏覽器上執行導致了web程序猿繼續創建這些垃圾的殘缺的代碼.經過評估發現,網絡上99%的web頁面至少存在一個錯誤.由于這些錯誤并沒有的導致瀏覽器在頁面顯示這些錯誤,所以就沒有人去修復這個bug.
可是W3C組織卻覺得這是一個主要的問題.而且著手來訂正它.
XML,在1997年公布了.打破了瀏覽器容許HTML代碼有錯的傳統,要求使用XML的語言必須將這些問題當成是錯誤并報告給終端用戶.
當W3C將HTML改動為XML時,對應的用戶的代碼的MIME類型須要改動為
application/xhtml+xml,也就是將后綴改為(xhtml)
這樣能夠進行錯誤處理.假設你的XHTML頁面中有一個錯誤,那么瀏覽器就會停止進程而且報告錯誤給終端用戶.
這個觀點并非非常流行,因為評估的有99%的站點存在問題,所以常常出現的問題
讓XHTML1.0 和XHTML1.1 的新特性全然得不到體現.站點程序猿基本上直接忽略
application/xhtml+xml ,在并不意味則他們相同放棄了XHTML.
附帶的XHTML給站點程序猿一個后門,用一些類似于XHTML的語法,可是還是使用
text/html MIME 類型.這就是我們如今成千上萬的站點的做法 .
即使是今天,很多網頁通過聲明為XHTML類型,他們通過在頁面的第一行聲明XHTML doctype
使用小寫的標簽名稱,在屬性上面使用引號.在空元素后面加斜杠如<br/> <hr/>
只這些非常小的部分通過application/xhtml+xml MIME 類型觸發錯誤處理.
不論什么頁面假設它的MIME類型是text/html,那么不管它的doctype,語法,代碼風格是什么樣子的.將會使用容錯的html解釋器,忽略標記的錯誤.
好了,我總結一下,我們如今常常寫的頁面,事實上就是這個后門的體現.
那么,不這么定義頭行不行?
如今是行了,可是假設是曾經老版本號的瀏覽器,你的站點可能就面目全非了.
假設你想編寫可以兼容非常多瀏覽器的站點,那么推薦你還是使用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
它要求很寬松的DTD。它同意你繼續使用HTML4.01的標識.
能夠說XHTML 1.0是更加嚴格和純粹的HTML 4.01 版本號.
當然你也能夠使用
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"?
"http://www.w3.org/TR/html4/loose.dtd">
這樣的純粹的HTML4.01 為什么須要頭呢.
由于在 HTML 4.01 中,<!DOCTYPE> 聲明引用 DTD,由于 HTML 4.01 基于 SGML。DTD 規定了標記語言的規則,這樣瀏覽器才干正確地呈現內容。
為什么都是Transitional這樣的類型的..這是過渡的版本號,兼容性更好.
然后將MIME類型改為我們的text/html.文件后綴為(html)為什么要這么多此一舉呢?由于大多數瀏覽器
遵循XHTML1.0 或者XHTML 1.1,或者使用HTML 4.01 它們有了一些新的特性.我們都想用這些新特性,可是又不想讓自己的頁面報錯.折中的辦法應該就是這樣了.
可是對于大多數站點程序猿來說,我想他們事實上就是所謂的"掛羊頭賣狗肉"吧.
新特性沒用到,還由于這些無厘頭的頭部把自己的代碼搞的云里霧里的.
幸好,我們的HTML5時代來臨了.全部的這些都將成為歷史.
HTML5不是基于SGML的,所以不須要引用DTD.僅僅須要
<!DOCTYPE html>
That is all.
Best Wishes....
轉載于:https://www.cnblogs.com/zfyouxi/p/5094121.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的正确理解HTML,XHTML页面的头部doctype定义的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2016年股市上扬将一路顺畅
- 下一篇: 数据结构之图的遍历:深度优先遍历(DFS