Прописные или строчные doctype? - PullRequest
159 голосов
/ 11 августа 2011

При написании HTML5-типа документа, какой правильный метод?

<!DOCTYPE html>

или

<!doctype html>

Ответы [ 6 ]

163 голосов
/ 02 февраля 2012

В HTML DOCTYPE нечувствителен к регистру. Следующие DOCTYPE действительны:

<!doctype html>
<!DOCTYPE html>
<!DOCTYPE HTML>
<!DoCtYpE hTmL>

В сериализации XML (то есть XHTML) DOCTYPE не требуется, но если вы используете его, DOCTYPE должно быть в верхнем регистре:

<!DOCTYPE html>

См. XML-сериализация HTML5, также известная как XHTML5 :

Обратите внимание, что если в документе XHTML нет прописных букв DOCTYPE, синтаксический анализатор XML возвратит синтаксическую ошибку.

Вторая часть может быть записана в нижнем регистре (html), в верхнем регистре (HTML) или даже в смешанном регистре (hTmL) - все равно будет работать. Однако, чтобы соответствовать Правилам разметки полиглота для HTML-совместимых документов XHTML , его следует писать строчными буквами.

34 голосов
/ 30 мая 2014

Если кто-то еще интересуется 2014 годом, пожалуйста, обратитесь к нему:

HTML5

W3 HTML5 Spec - Doctype

DOCTYPE должен состоять из следующих компонентов, в следующем порядке:

1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...

Примечание: несмотря на то, что он отображается во всех заглавных буквах,спецификация утверждает, что она нечувствительна

----------------------------------------------------------------------

XHTML5

W3 HTML5 - XHTML

This specification does not define any syntax-level requirements 
beyond those defined for XML proper.

XML documents may contain a DOCTYPE if desired, but this is not required 
to conform to this specification. This specification does not define 
a public or system identifier, nor provide a formal DTD.

Глядя на спецификацию XML, в списке прописывается DOCTYPE, но я не могу найтивсе, что заявляет, что «все заглавные буквы» является обязательным (для сравнения, в спецификации HTML5, указанной выше, оно отображается в примере во всех заглавных буквах, но в спецификации явно указывается, что регистр нечувствителен ).

----------------------------------------------------------------------

Разметка полиглота

W3Разметка полиглота -Intro

Иногда полезно иметь возможность обслуживать документы HTML5, которые также являются правильно сформированными документами XML.

W3 Разметка полиглота - Doctype

Разметка Polyglot использует декларацию типа документа (DOCTYPE), определенную в разделе 8.1.1 [HTML5].Кроме того, DOCTYPE соответствует следующим правилам:

* The string DOCTYPE is in uppercase letters.

Итак, обратите внимание, что разметка Ployglot использует обычный тип документа HTML5, но с дополнениями / изменениями.Для нашего обсуждения, в частности, DOCTYPE объявлен во всех заглавных буквах .

----------------------------------------------------------------------

Суммирование

Просмотр раздела HTML и XHTML в W3

[Мнение] Я бы не стал слишком беспокоиться о соблюдении XML-совместимости, если вы специально не пытаетесь обдумать это.Для большинства клиентских и серверных JS-разработок JSON заменил XML.

Поэтому я могу видеть, что это действительно применимо, если вы пытаетесь обновить существующую унаследованную систему на основе xhtml / xml, чтобы сосуществоватьс новой функциональностью HTML5.Если это так, посмотрите в спецификацию разметки полиглота.

17 голосов
/ 15 августа 2012

Согласно последней спецификации , вы должны использовать что-то без учета регистра для <!DOCTYPE html>.Таким образом, хотя браузеры должны поддерживать любой случай, который вы предпочитаете, из этого следует сделать вывод, что <!DOCTYPE html> - это канонический случай.

6 голосов
/ 14 апреля 2014

Прописные или строчные буквы являются «правильными».Однако, если вы используете веб-шрифты и заботитесь о IE7, я бы рекомендовал использовать <!DOCTYPE html> из-за ошибки в IE7, из-за которой веб-шрифты иногда не работают при использовании <!doctype html> (например, в этот ответ ).

Вот почему я всегда пишу прописными буквами тип документа.

6 голосов
/ 11 августа 2011

Стандарт для HTML5 заключается в том, что теги нечувствительны к регистру.

http://www.w3schools.com/html5/tag_doctype.asp

Более технически: (http://www.w3.org/TR/html5/syntax.html)

DOCTYPE должен состоять из следующих компонентов, в следующем порядке:

  1. Строка, которая является ASCII-регистронезависимым совпадением для строки <!DOCTYPE.
2 голосов
/ 04 июня 2015

Вопрос вроде подразумевает, что есть только один правильный ответ, предлагает несколько вариантов выбора из двух и просит нас выбрать один.Я бы предположил, что для HTML5 действительны <!DOCTYPE html> и <!doctype html>.

Таким образом, браузер с поддержкой HTML5 будет принимать строчный и правильно обрабатывать HTML.

Браузеры, ранее не обращавшие внимания на HTML5, я слышал, что даже без доктайпа, они попытаются обработать HTML как можно лучше.И если они не распознают строчный, тип документа будет делать то же самое.Поэтому нет смысла делать его заглавными, так как эти браузеры в любом случае не смогут полностью реализовать любые объявления HTML5.

...