2015-11-06 47 views

回答

1

8.1.1 The DOCTYPE

一個DOCTYPE是必需的序言。

注意:由於遺留原因需要DOCTYPE。省略時,瀏覽器傾向於使用不同的呈現模式,這與某些規範不兼容。在文檔中包括DOCTYPE確保 瀏覽器盡最大努力遵循相關的 規範。

一個DOCTYPE必須由以下幾部分組成,順序如下:

  1. 一個字符串,它是一個ASCII case-insensitive匹配字符串 「<!DOCTYPE」。
  2. 一個或多個space characters
  3. 一個字符串,它是與字符串「html」匹配的ASCII case-insensitive
  4. 可選地,DOCTYPE legacy stringobsolete permitted DOCTYPE string(定義如下)。
  5. 0或更多space characters
  6. A「>」(U + 003E)字符。

注意:換句話說,<!DOCTYPE html>,不區分大小寫。

對於不能輸出HTML標記 與短DOCTYPE「<!DOCTYPE html>」,一個DOCTYPE 遺留 串可被插入到所述的DOCTYPE HTML發生器的目的(在位置如上所定義 )。此字符串必須包含:

  1. 一個或多個space characters
  2. 與字符串「SYSTEM」匹配的ASCII case-insensitive字符串。
  3. 一個或多個space characters
  4. A U + 0022引號或U + 0027 APOSTROPHE字符(引號)。
  5. 文字字符串「about:legacy-compat」。
  6. 匹配的U + 0022引號或U + 0027 APOSTROPHE字符(即與前面標記爲引號的步驟中相同的字符)。

:換句話說,<!DOCTYPE html SYSTEM "about:legacy-compat"><!DOCTYPE html SYSTEM 'about:legacy-compat'>, 不區分大小寫除了在單引號或雙引號的部分。

DOCTYPE legacy string不應被使用,除非文件 從一個系統,不能輸出較短的字符串生成。

爲了幫助從HTML4和XHTML1,鄰bsolete 允許DOCTYPE串可以插入DOCTYPE(在上面定義的 位置)作者過渡。此字符串必須包含:

  1. 一個或多個space characters
  2. 與字符串「PUBLIC」匹配的字符串ASCII case-insensitive
  3. 一個或多個space characters
  4. A U + 0022引號或U + 0027 APOSTROPHE字符(第一引號)。
  5. 下表中第一列的單元格之一的字符串。該單元所屬的行是所選行
  6. 匹配的U + 0022引號或U + 0027 APOSTROPHE字符(即與之前標記爲的第一引號 標記相同的字符)。
  7. 如果使用系統標識符,
    1. 一個或多個space characters
    2. A U + 0022引號或U + 0027 APOSTROPHE字符(第三引號)。
    3. 來自選定行第二列單元格的字符串。
    4. 匹配的U + 0022引號或U + 0027 APOSTROPHE字符(即與前面步驟中標記爲的第三引語 mark相同的字符)。

在一個obsolete permitted DOCTYPE string公共和系統標識符的允許值。

┌────────────────────────────────┬─────────────────────────────────────────────────┬───────────────────────────┐ 
│Public identifier    │System identifier        │System identifier optional?│ 
├────────────────────────────────┼─────────────────────────────────────────────────┼───────────────────────────┤ 
│-//W3C//DTD HTML 4.0//EN  │http://www.w3.org/TR/REC-html40/strict.dtd  │Yes      │ 
│-//W3C//DTD HTML 4.01//EN  │http://www.w3.org/TR/html4/strict.dtd   │Yes      │ 
│-//W3C//DTD XHTML 1.0 Strict//EN│http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd│No       │ 
│-//W3C//DTD XHTML 1.1//EN  │http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd  │No       │ 
└────────────────────────────────┴─────────────────────────────────────────────────┴───────────────────────────┘ 

甲含有obsolete permitted DOCTYPE stringDOCTYPE是 一個過時允許DOCTYPE。作者不應使用obsolete permitted DOCTYPEs,因爲它們不必要的長。

1

這些是允許的,但使其成爲「過時的允許DOCTYPE」。規格狀態"Authors should not use obsolete permitted DOCTYPEs"

http://www.w3.org/html/wg/drafts/html/master/syntax.html#the-doctype

這些只包括幫助從HTML4和XHTML1的開發過渡到HTML5,但應考慮deprecated如果可能的話,你應該避免使用它們。

另一個警告:在舊版瀏覽器中,如果您不使用簡單的<!DOCTYPE html>聲明,則可能無法獲得正確的文檔呈現模式。

3

在HTML5中,

<!DOCTYPE html> 

是允許DOCTYPE聲明之一。並且它是推薦的一個。 請注意,它在HTML5中不適用。

不過,如果你是絕對強制使用類似於HTML4/XHTML的東西,你可以使用傳統兼容的文檔類型

<!DOCTYPE html SYSTEM "about:legacy-compat"> 

這可能是這種情況,如果你使用一些軟件或框架到生成您的HTML5文檔。

如果您只是創作新的HTML5文檔,建議您僅使用<!DOCTYPE html>

更多閱讀:

+0

請看我的回答。他實際上希望使用「過時的允許DOCTYPE」。 –

+0

是的,謝謝,編輯,使其更加清楚,應儘可能避免遺留的東西。 –

+0

非常感謝! –

1

HTML 4.01是基於標準通用標記語言(SGML)。爲了使瀏覽器能夠正確呈現頁面,必須指定DTD。

HTML 5不基於SGML。因此它不需要對DTD的引用。所以它只是:

<!DOCTYPE html> 

爲HTML5

相關問題