Прописные или строчные doctype?

135

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

<!DOCTYPE html>

или

<!DOCTYPE html>
  • 0
    Обычно это будет первый файл, хотя можно использовать любой <! DOCTYPE html>
  • 0
    Мне удалось ответить на мой собственный вопрос, но я решил оставить его на тот случай, если у других возникнет аналогичная мысль. Я лично предпочитаю строчные буквы; ничто другое в HTML5 не является заглавной.
Показать ещё 2 комментария
Теги:
doctype

6 ответов

142
Лучший ответ

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

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

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

<!DOCTYPE html>

См. Сериализация XML HTML5, ака 'XHTML5:

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

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

  • 9
    Нет, это неверно В SGML декларация типа документа - производство 110, в XML - производство 28. В обоих случаях оно объявляется как фиксированная строка «DOCTYPE» (которая не является тегом , это ключевое слово ). Так что в канонических определениях в соответствующих стандартах SGML и XML он всегда в верхнем регистре. Если вы обнаружите программное обеспечение, которое допускает использование «прописного типа» в нижнем регистре, это программное обеспечение не соответствует стандартам. Браузеры спроектированы так, чтобы быть «либеральными в том, что они принимают», но совместимый процессор XML должен пометить это как ошибку проверки.
  • 5
    ... и я должен отметить, что X / HTML5 также неверен в этом. Как указано, XHTML5 просто не является допустимой разметкой XML, и при этом это не может быть. В спецификации X / HTML5 есть множество ошибок. Я не отношусь к этому очень серьезно. Тот факт, что им пришлось создать « разметку полиглота » (совершенно новую концепцию), ясно говорит, что они наказаны.
Показать ещё 8 комментариев
28

Если кому-то все еще интересно в 2014 году, проконсультируйтесь с этим:

HTML5

W3 HTML5 Spec - Doctype

A 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, указанной выше, она отображается в примере во всех cap, но спецификация явно заявляет, что это case- нечувствительный).

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

Разметка Polyglot

W3 Polyglot Markup - Введение

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

W3 Polyglot Markup - Doctype

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

* The string DOCTYPE is in uppercase letters.

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

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

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

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

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

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

  • 21
    Сейчас 2015 год, что мне делать? ;)
  • 13
    @ Сонни Вы должны обновить свой календарь. Сейчас 2016 год. ;)
Показать ещё 2 комментария
17

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

  • 1
    В спецификации довольно четко говорится, что тип документа должен содержать строку, которая является нечувствительным к регистру эквивалентом '<! DOCTYPE', следовательно, подразумевается, что '<! DOcTyPe' точно так же правильно.
  • 6
    Как я уже сказал, спецификация требует, чтобы браузеры поддерживали любой случай, поэтому любой случай будет работать. Но спрашивающий явно ищет стандартную, каноническую форму, поэтому при отсутствии веских оснований выбирать один над другим, вы также можете использовать пример из спецификации ...
Показать ещё 6 комментариев
6

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

Вот почему я всегда занимаю верхний регистр doctype.

6

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

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

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

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

  • Строка, которая не соответствует значению ASCII для строки <!DOCTYPE.
  • 32
    Я не доверяю W3Schools на 100%, они не связаны с W3C, и хотя большая часть их информации является хорошей, некоторые из них - нет.
  • 0
    Это довольно широко известно - вот ссылка на w3.org: w3.org/TR/html5/syntax.html
Показать ещё 5 комментариев
1

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню