在HTML中,文档类型声明是元素吗?
我猜不是,因为在XML中,文档类型声明<!DOCTYPE
是序言的一部分,而不是元素。参见https://www.w3.org/TR/xml/#sec-prolog-dtd和https://www.w3.org/TR/xml/#NT-doctypedecl和https://stackoverflow.com/a/55796040/156458
但是亚当·弗里曼(Adam Freeman)的HTML5权威指南说
DOCTYPE元素告诉浏览器正在处理HTML 文献。这是通过HTML布尔属性表示的:
<!DOCTYPE HTML>
答案 0 :(得分:3)
在任何精确的,面向标准的语言中,DOCTYPE都称为 。
“ HTML5权威指南” ,尽管它的名称很理想,但术语却草率行事。
XML
的语法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样式的布尔型属性了。您引用的作者绝对不知道他在说什么。