在HTML5中,我的<!DOCTYPE html>声明可以包含其他内容吗?



我试图在.html文件的开头指定我的声明。现在,在HTML4.01或XHTML1.1中,W3C有一些额外的东西,比如:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

HTML5包含这样的东西吗?

在HTML5中,

<!DOCTYPE html> 

是允许的doctype声明之一。这是推荐的。请注意,它在HTML5中区分大小写INsensitive。

尽管如此,如果你被迫使用类似HTML4/XHTML的东西,你可以使用遗留兼容的doctype:

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

如果您使用某些软件或框架来生成您的HTML5文档,则可能会出现这种情况。

如果您只是在编写新的HTML5文档,我们鼓励您只使用<!DOCTYPE html>

更多阅读:

  • WHATWG HTML5生活标准
  • W3C HTML5参考(可能已过时)

8.1.1 DOCTYPE

DOCTYPE是必需的前导码。

注意:出于遗留原因,需要DOCTYPE。如果省略,浏览器倾向于使用不兼容的不同呈现模式有一些规格。在文档中包含DOCTYPE可确保浏览器尽最大努力遵循相关规范。

DOCTYPE必须按以下顺序由以下组件组成:

  1. 字符串"<!DOCTYPE"的ASCII不区分大小写匹配字符串
  2. 一个或多个空格字符
  3. 字符串"html"的ASCII不区分大小写匹配字符串
  4. 可以选择DOCTYPE传统字符串或过时的允许DOCTYPE字符串(定义如下)
  5. 零个或多个空格字符
  6. 一个">"(U+003E)字符

注意:换句话说,<!DOCTYPE html>,不区分大小写。

用于无法输出HTML标记的HTML生成器带有简短的DOCTYPE"<!DOCTYPE html>",是一个DOCTYPE遗留版本字符串可以插入DOCTYPE(在定义的位置以上)。此字符串必须包含:

  1. 一个或多个空格字符
  2. 与字符串"SYSTEM"匹配的ASCII不区分大小写的字符串
  3. 一个或多个空格字符
  4. 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'>,不区分大小写,单引号或双引号中的部分除外。

除非文档是从无法输出较短字符串的系统生成的。

为了帮助作者从HTML4和XHTML1过渡允许的DOCTYPE字符串可以插入DOCTYPE(上面定义的位置)。此字符串必须包含:

  1. 一个或多个空格字符
  2. 与字符串"PUBLIC"匹配的ASCII不区分大小写的字符串
  3. 一个或多个空格字符
  4. 一个U+0022引号或U+0027 APOSTROPHE字符(第一个引号
  5. 下表第一列中某个单元格中的字符串。此单元格所属的行是选定的行
  6. 匹配的U+0022引号或U+0027 APOSTROPHE字符(即与前面标记为第一个引号的步骤中的字符相同标记
  7. 如果使用系统标识符,
    1. 一个或多个空格字符
    2. U+0022引号或U+0027 APOSTROPHE字符(第三个引号
    3. 所选行第二列单元格中的字符串
    4. 匹配的U+0022引号或U+0027 APOSTROPHE字符(即与前面标记为第三个引号的步骤中的字符相同标记

废弃中公共和系统标识符的允许值允许的DOCTYPE字符串。

┌────────────────────────────────┬─────────────────────────────────────────────────┬───────────────────────────┐
│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                         │
└────────────────────────────────┴─────────────────────────────────────────────────┴───────────────────────────┘

包含过时的允许DOCTYPE字符串的DOCTYPE是一个过时的允许DOCTYPE。作者不应使用过时的允许的DOCTYPE,因为它们不必要地长。

这些是允许的,但使其成为"过时的允许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>声明,可能无法获得正确的文档呈现模式。

HTML 4.01基于标准通用标记语言(SGML)。为了使浏览器能够正确地呈现页面,必须指定DTD。

HTML5不是基于SGML的。因此,它不需要对DTD的引用。所以它只是:

<!DOCTYPE html>

对于HTML5

最新更新