關於網頁中第一行的DOCTYPE申明

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"關於網頁中第一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">代碼html

用dw設計網頁時,代碼最前面總要出現一個下面的東東,web

<!doctype html public "-/w3c/dtd html 4.01 transitional/en" "http://www.w3.org/tr/html4/loose.dtd">瀏覽器

這個是dw自動在網頁文件頁增長了dtd信息(DOCTYPE聲明),能夠刪。刪除後,瀏覽器會使用的默認dtd。app

不少設計師和開發者都不知道什麼是DOCTYPE,DOCTYPE有什麼用。DOCTYPE是document type的簡寫。主要用來講明你用的XHTML或者HTML是什麼版本。瀏覽器根據你DOCTYPE定義的DTD(文檔類型定義)來解釋頁面代碼。因此,若是你不注意設置了錯誤的DOCTYPE,結果可能會令頁面出現錯誤。框架

doctype的做用ide

doctype聲明指出閱讀程序應該用什麼規則集來解釋文檔中的標記。在web文檔的狀況下,「閱讀程序」一般是瀏覽器或者校驗器這樣的一個程序,「規則」則是w3c所發佈的一個文檔類型定義(dtd)中包含的規則。svg

每一個dtd都包括一系列標記、attributes和properties,它們用於標記web文檔的內容;此外還包括一些規則,它們規定了哪些標記能出如今其餘哪些標記中。每一個web建議標準(好比html 4 frameset和xhtml 1.0 transitional)都有本身的dtd。網站

假如文檔中的標記不遵循doctype聲明所指定的dtd,這個文檔除了不能經過代碼校驗以外,還有可能沒法在瀏覽器中正確顯示。對於標記不一致的問題,瀏覽器相較於校驗器來講更寬容。可是,不正確的doctype聲明常常致使網頁不正確顯示,或者致使它們根本不能顯示。設計

選擇正確的doctypeorm

爲了得到正確的doctype聲明,關鍵就是讓dtd與文檔所遵循的標準對應。例如,假定文檔遵循的是xhtml 1.0 strict標準,文檔的doctype聲明就應該引用相應的dtd。另外一方面,若是doctype聲明指定的是xhtml dtd,但文檔包含的是舊式風格的html標記,就是不恰當的;相似地,若是doctype聲明指定的是html dtd,但文檔包含的是xhtml 1.0 strict標記,一樣是不恰當的。

有的時候,也能夠根本不使用一個doctype聲明。若是沒有指定有效的doctype聲明,大多數瀏覽器都會使用一個內建的默認dtd。在這種狀況下,瀏覽器會用內建的dtd來試着顯示你所指定的標記。對於一些臨時性的、匆忙拼湊的文檔(這種文檔有許多),你確實能夠考慮省略doctype聲明,並接受瀏覽器的默認顯示。

然而,因爲大多數web文檔都須要遵循由w3c發佈的某個國際公認的web標準,因此那些文檔一般都要包含如下標準doctype聲明之一:

html 2(數字2表明版本號):

<!doctype html public "-/ietf/dtd html 2.0/en">

html 3.2:

<!doctype html public "-/w3c/dtd html 3.2 final/en">

——————————————————————————————

html 4.01 strict:

<!doctype html public "-/w3c/dtd html 4.01/en"

"http://www.w3.org/tr/html4/strict.dtd">

html 4.01 transitional:

<!doctype html public "-/w3c/dtd html 4.01 transitional/en"

"http://www.w3.org/tr/html4/loose.dtd">

html 4.01 frameset:

<!doctype html public "-/w3c/dtd html 4.01 frameset/en"

"http://www.w3.org/tr/html4/frameset.dtd">

——————————————————————————————

xhtml 1.0 strict:

<!doctype html public "-/w3c/dtd xhtml 1.0 strict/en"

"http://www.w3.org/tr/xhtml1/dtd/xhtml1-strict.dtd">

xhtml 1.0 transitional:

<!doctype html public "-/w3c/dtd xhtml 1.0 transitional/en"

"http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

xhtml 1.0 frameset:

<!doctype html public "-/w3c/dtd xhtml 1.0 frameset/en"

"http://www.w3.org/tr/xhtml1/dtd/xhtml1-frameset.dtd">

——————————————————————————————

xhtml 1.1:

<!doctype html public "-/w3c/dtd xhtml 1.1/en"

"http://www.w3.org/tr/xhtml11/dtd/xhtml11.dtd">

xhtml 1.1 plus mathml plus svg:

<!doctype html public

"-/w3c/dtd xhtml 1.1 plus mathml 2.0 plus svg 1.1/en"

"http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">

(說明一下,XHTML 1就是HTML 4.01的XML化,是一種不向前兼容的格式,將來的XHTML 2也不會向後兼容。)

你們能夠仔細看看上邊三句代碼的不一樣之處,他們表明了三種不一樣的XHTML文檔類型。

Transitional類型:是指一種過渡類型,使用這種類型瀏覽器對XHTML的解析比較寬鬆,容許使用HTML4.01中的標籤,但必須符合XHTML的語法。這種是如今通用的方法,用dreamweaver建立網頁時默認就是這種類型。

Strict類型:嚴格類型,使用時瀏覽器將相對嚴格,不容許使用任何表現形式的標識和屬性,如在元素中直接使用bgcolor背景色屬性等。

Frameset類型:框架頁類型,若是網頁使用了框架結構,就有必要使用這樣的文檔聲明。

那麼應該選擇哪一個?我相信不少人,尤爲是接觸了網頁標準(Web Standards)的人,會堅決果斷地選擇XHTML 1.0 Transitional。這是一股趨勢,這是一股潮流,暗示着,嘿嘿,夥計,看見沒,咱們的網站使用最新技術構建了……

這裏有一個頗有趣的統計,使用XHTML 1.0 Strict和Transitional的佔絕大多數,且對半開。那麼,這個世界就那麼美好了嗎?

咱們先來看看W3C的建議,總結出下表:

Media types summary for serving XHTML documents Media Type text/html application/xhtml+xml application/xml text/xml HTML 4 SHOULD MUST NOT MUST NOT MUST NOT XHTML 1.0 (HTML Compatible) MAY SHOULD MAY MAY XHTML 1.0 (other) SHOULD NOT SHOULD MAY MAY XHTML Basic SHOULD NOT SHOULD MAY MAY XHTML 1.1 SHOULD NOT SHOULD MAY MAY XHTML + MathML SHOULD NOT SHOULD MAY MAY

前面說到,XHTML 1其實是HTML 4.01的XML化。即時看起來,寫起來,用起來都很像,但這是兩種不一樣的規範。XHTML的MIME-TYPE應該是application/xhtml+xml,而HTML應該是text/html。二者有何不一樣,簡單的說,application/xhtml+xml屬於XML,因此行爲遵循一切XML規範,最重要的是良構(Well-Formed)這一點。

除了XHTML 1.0 Transitional和Frameset,咱們能夠看到,XHTML 1.0 Strict和1.1都SHOULD使用application/xhtml+xml。然而,咱們能夠看到,前面提到的那個統計,並無多少個網站使用application/xhtml+xml,能夠說他們是扯虎皮作大旗而已,它們非良構的內容依然能夠經過支持application/xhtml+xml的瀏覽器(如Firefox, Opera)來展示,由於它們本質上仍是text/html,而text/html並不須要良構。

能夠看到,XHTML 1.0 Transitional的地位很曖昧,它的Transitional 使得其MAY text/html,SHOULD application/xhtml+xml。也就是說,怎麼處理,實際上交由客戶端(client side)來決定。在我所見到的桌面瀏覽器中,它們都堅決果斷地選擇text/html,這跟它們一向的寬容風格保持一致。

可是很不幸的是,就有這麼一個瀏覽器,Opera for mobile,從8.0開始,凡是聲明瞭XHTML的Doctype,它都一概以application/xhtml+xml來處理。因此,你那不良構的網站,只好在它上面顯示出錯信息。

因此,推薦使用XHTML 1.0 Transitional,是鼓勵你從HTML向XHTML轉化,且保持過渡性。但過渡性並不表明你就能夠不重視XML的良構。

實際上,咱們並無可以發現XHTML 1.0 Transitional跟HTML 4.01 Strict有何不一樣,除了一個target,一些過期的表現標籤和屬性(attribute)。只要咱們在HTML中不寫做那些XHTML中不存在的標籤和屬性,咱們實際上就是在寫XHTML 1.0 Transitional,對咱們並無什麼影響,什麼XML的優越性徹底不能在XHTML 1.0 Transitional中體現出來,因此與其讓Opera for mobile(或許還有其餘變數)不能工做,還不如選擇HTML 4.01 Strict。固然,若是您能保證你的XHTML 1.0 Transitional 百分百良構,使用它是一個更佳的選擇。而後,請你告訴我,世界上,使用了XHTML 1.0 Transitional的網站,非首頁的其餘頁面能有多少個是可以經過驗證的?

結論是,若是你沒有勇氣保證整個站點百分百良構,請使用HTML 4.01 Strict;若是您有勇氣保證整個站點百分百良構,您能夠直接選擇XHTML 1.1。

相關文章
相關標籤/搜索