我试图在.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必须按以下顺序由以下组件组成:
- 字符串"<!DOCTYPE"的ASCII不区分大小写匹配字符串
- 一个或多个空格字符
- 字符串"html"的ASCII不区分大小写匹配字符串
- 可以选择DOCTYPE传统字符串或过时的允许DOCTYPE字符串(定义如下)
- 零个或多个空格字符
- 一个">"(U+003E)字符
注意:换句话说,
<!DOCTYPE html>
,不区分大小写。用于无法输出HTML标记的HTML生成器带有简短的DOCTYPE"
<!DOCTYPE html>
",是一个DOCTYPE遗留版本字符串可以插入DOCTYPE(在定义的位置以上)。此字符串必须包含:
- 一个或多个空格字符
- 与字符串"
SYSTEM
"匹配的ASCII不区分大小写的字符串- 一个或多个空格字符
- U+0022引号或U+0027 APOSTROPHE字符(引号)
- 文字字符串"
about:legacy-compat
"- 匹配的U+0022引号或U+0027 APOSTROPHE字符(即与前面标记为引号的步骤中的字符相同)
注意:换句话说,
<!DOCTYPE html SYSTEM "about:legacy-compat">
或<!DOCTYPE html SYSTEM 'about:legacy-compat'>
,不区分大小写,单引号或双引号中的部分除外。除非文档是从无法输出较短字符串的系统生成的。
为了帮助作者从HTML4和XHTML1过渡允许的DOCTYPE字符串可以插入DOCTYPE(上面定义的位置)。此字符串必须包含:
- 一个或多个空格字符
- 与字符串"
PUBLIC
"匹配的ASCII不区分大小写的字符串- 一个或多个空格字符
- 一个U+0022引号或U+0027 APOSTROPHE字符(第一个引号)
- 下表第一列中某个单元格中的字符串。此单元格所属的行是选定的行
- 匹配的U+0022引号或U+0027 APOSTROPHE字符(即与前面标记为第一个引号的步骤中的字符相同标记)
- 如果使用系统标识符,
- 一个或多个空格字符
- U+0022引号或U+0027 APOSTROPHE字符(第三个引号)
- 所选行第二列单元格中的字符串
- 匹配的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