在HTML中,文档类型声明是元素吗?

时间:2019-04-27 22:57:25

标签: html xml html5 w3c

在HTML中,文档类型声明是元素吗?

我猜不是,因为在XML中,文档类型声明<!DOCTYPE是序言的一部分,而不是元素。参见https://www.w3.org/TR/xml/#sec-prolog-dtdhttps://www.w3.org/TR/xml/#NT-doctypedeclhttps://stackoverflow.com/a/55796040/156458

但是亚当·弗里曼(Adam Freeman)的HTML5权威指南说

  

DOCTYPE元素告诉浏览器正在处理HTML   文献。这是通过HTML布尔属性表示的:

<!DOCTYPE HTML>

2 个答案:

答案 0 :(得分:3)

在任何精确的,面向标准的语言中,DOCTYPE都称为

“ HTML5权威指南” ,尽管它的名称很理想,但术语却草率行事。

XML

doctypedecl

的语法
doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'

element明显不同,并且不兼容:

element   ::= EmptyElemTag | STag content ETag  
STag      ::= '<' Name (S Attribute)* S? '>'
Attribute ::= Name Eq AttValue
ETag      ::= '</' Name S? '>'

HTML5

HTML5规范对DOCTYPE(WHATWG / W3C)和元素(WHATWG / W3C)具有单独的部分,并且绝不以任何使DOCTYPE与以下内容混淆的方式处理术语元素。

答案 1 :(得分:2)

文档类型声明是标记文档序言开头的语法构造。在SGML中,通过扩展XML,DTD告诉解析器文档元素(文档“根”元素的名称),并可选地包含或引用元素,属性,实体,符号,短引用(SGML)的标记声明。 ),以及文档中使用的链接规则(仅限SGML)。

一个元素,即OTOH,是一个逻辑结构,由开始和结束元素标签组成。

在网络浏览器中,过去曾经使用doctype声明来表示HTML版本级别,但是HTML5仅接受<!DOCTYPE html><!DOCTYPE html SYSTEM "about:legacy-compat">

标记声明绝对不能是元素,并且在doctype声明中使用的HTML不是属性,更不用说用作HTML5样式的布尔型属性了。您引用的作者绝对不知道他在说什么。