Является ли объявление типа документа в HTML элементом? - PullRequest
2 голосов
/ 28 апреля 2019

Является ли объявление типа документа в 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

Но в «Полном руководстве по HTML5» Адама Фримена говорится:

Элемент DOCTYPE сообщает браузеру, что имеет дело с HTML документ. Это выражается через логический атрибут HTML:

<!DOCTYPE HTML>

Ответы [ 2 ]

5 голосов
/ 28 апреля 2019

Нет

Ни в каком конкретном, ориентированном на стандарты языке нет DOCTYPE, именуемого элементом .

Полное руководство по HTML5 несмотря на свое желательное название, он неаккуратен в терминологии.

XML

Грамматика для doctypedecl

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

явно отличается от элемента :

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 с элементами.

4 голосов
/ 28 апреля 2019

A объявление типа документа является синтаксической конструкцией в начале пролога документа разметки. В SGML и расширении XML DTD сообщает синтаксическому анализатору элемент документа (имя корневого элемента документа) и, необязательно, содержит или ссылается на объявления разметки для элементов, атрибутов, сущностей, нотаций, кратких ссылок (SGML). только) и правила ссылок (только SGML), используемые в документе.

Элемент , OTOH, представляет собой логическую конструкцию и состоит из начального и конечного элемента tags .

В веб-браузерах объявления doctype использовались для необычного выражения уровней версий HTML в прошлом, но HTML5 принимает только <!DOCTYPE html> или <!DOCTYPE html SYSTEM "about:legacy-compat">.

Ни в коем случае объявление разметки не может быть элементом, а HTML, используемый в объявлении doctype, не является атрибутом, не говоря уже о том, чтобы использовать его как логический атрибут в стиле HTML5. Автор, которого вы цитировали, абсолютно не знает, о чем говорит.

...