Обычно это будет первый файл, хотя можно использовать любой из них <! DOCTYPE html>
Shadow
Мне удалось ответить на мой собственный вопрос, но я решил оставить его на тот случай, если у других возникнет аналогичная мысль. Я лично предпочитаю строчные буквы; ничто другое в HTML5 не является заглавной.
Джош
11
Google.com использует строчные буквы<!doctype html>
Leo Galleguillos
3
@HelloWorld: Это потому, что строчные буквы сжимаются лучше, потому что они более распространены. Для сайтов, которые получают миллионы посещений в день, это может иметь значение.
Заз
Как насчет файлов SVG?
Уильям Энтрикен
Ответы:
183
В HTML DOCTYPE нечувствителен к регистру. Следующие DOCTYPE действительны:
Обратите внимание, что если вы не пишете DOCTYPEв верхнем регистре в документе XHTML, синтаксический анализатор XML вернет синтаксическую ошибку.
Вторая часть может быть написана в нижнем регистре ( html), верхнем регистре ( HTML) или даже в смешанном регистре ( hTmL) - все равно будет работать. Однако, чтобы соответствовать Рекомендациям по разметке полиглот для XHTML-документов , совместимых с HTML , его следует писать строчными буквами.
Нет, это неверно В SGML декларация типа документа - производство 110, в XML - производство 28. В обоих случаях оно объявляется как фиксированная строка «DOCTYPE» (которая не является тегом , это ключевое слово ). Так что в канонических определениях в соответствующих стандартах SGML и XML он всегда в верхнем регистре. Если вы обнаружите программное обеспечение, которое допускает использование «прописного типа» в нижнем регистре, это программное обеспечение не соответствует стандартам. Браузеры спроектированы так, чтобы быть «либеральными в том, что они принимают», но совместимый процессор XML должен пометить это как ошибку проверки.
Ичиро Фурусато
5
... и я должен отметить, что X / HTML5 также неверен в этом. Как указано, XHTML5 просто не является допустимой разметкой XML, и при этом это не может быть. В спецификации X / HTML5 есть множество ошибок. Я не отношусь к этому очень серьезно. Тот факт, что им пришлось создать « разметку полиглота » (совершенно новую концепцию), ясно говорит, что они наказаны.
Ичиро Фурусато
20
@Ichiro Я говорю о HTML, а не о SGML. Ни один браузер никогда не реализовывал SGML. Если бы они сделали, <title/foo/было бы эквивалентно <title>foo</title>. Только несколько валидаторов HTML используют SGML. Спецификация HTML5 - первая, которая проясняет это: whatwg.org/specs/web-apps/current-work/multipage/…
Матиас
2
@ TestSubject528491 Этот абзац относится ко второй части DOCTYPE ( html). Вот полное предложение: «Вторая часть может быть написана в нижнем регистре ( html), верхнем регистре ( HTML) или даже в смешанном регистре ( hTmL) - все равно будет работать. Однако, чтобы соответствовать Рекомендациям по разметке полиглот для XHTML-документов, совместимых с HTML, его следует писать строчными буквами ».
Матиас Биненс
15
@IchiroFurusato Вы можете прочитать о HTML5 . Цитата: «Однако, в отличие от предыдущих версий HTML, сериализация HTML [5] больше не рассматривается как применение SGML, а вместо этого определяет собственный синтаксис. Хотя синтаксис основан на SGML, он определяется таким образом, который больше похож на то, как браузеры фактически обрабатывают HTML в реальном мире, особенно в том, что касается обработки ошибок ».
Матиас Биненс
40
Если кто-то еще интересуется 2014 годом, пожалуйста, обратитесь к этому:
This specification does not define any syntax-level requirements
beyond those definedfor XML proper.
XML documents may contain a DOCTYPE if desired, but thisisnot required
to conform to this specification.This specification does not define
a publicor system identifier, nor provide a formal DTD.
Глядя на спецификацию XML, в ней указаны DOCTYPE прописными буквами, но я не могу найти ничего, в котором говорится, что «все заглавные буквы» необходимы (для сравнения, в приведенной выше спецификации HTML5 он отображается в примере со всеми заглавными буквами, но спецификация прямо указывает, что регистр не учитывается ).
В разметке полиглота используется объявление типа документа (DOCTYPE), указанное в разделе 8.1.1 [HTML5]. Кроме того, DOCTYPE соответствует следующим правилам:
*Thestring DOCTYPE isin uppercase letters.
Итак, обратите внимание, что разметка Ployglot использует обычный тип документа HTML5, но с дополнениями / изменениями. Для нашего обсуждения, наиболее заметно, что DOCTYPE объявлен во всех заглавных буквах .
[Мнение] Я бы не стал слишком сильно беспокоиться о соответствии XML-требованиям, если вы не попытаетесь это сделать. Для разработки большинства клиентских и JS-серверов JSON заменил XML.
Поэтому я могу видеть, что это действительно применимо, если вы пытаетесь обновить существующую унаследованную систему на основе xhtml / xml, чтобы сосуществовать с новыми функциями HTML5. Если это так, посмотрите в спецификации разметки полиглота.
Согласно последней спецификации , вы должны использовать что-то, для чего не учитывается регистр <!DOCTYPE html>. Таким образом, хотя браузеры должны поддерживать любой случай, который вы предпочитаете, разумно сделать вывод, что <!DOCTYPE html>это канонический случай.
В спецификации довольно четко говорится, что тип документа должен содержать строку, которая является нечувствительным к регистру эквивалентом '<! DOCTYPE', следовательно, подразумевается, что '<! DOcTyPe' точно так же правильно.
Джошн
6
Как я уже сказал, спецификация требует, чтобы браузеры поддерживали любой случай, поэтому любой случай будет работать. Но спрашивающий явно ищет стандартную, каноническую форму, поэтому при отсутствии веских причин выбирать одно из другого, вы также можете использовать пример из спецификации ...
Джон Меллор
9
Спецификация последовательно записывает это как <!DOCTYPE html>, поэтому было бы разумно сделать вывод, что автор спецификации имеет небольшое предпочтение для этой конкретной капитализации. Я собираюсь использовать ту же заглавную букву, что и в спецификации, поскольку неплохо, чтобы эти вещи были согласованными, но если вы предпочитаете, <!dOcTyPeто будьте моим гостем :)
Джон Меллор
3
@joshnh Я не понимаю твоего замешательства. 1) Декларация DOCTYPE должна быть без учета регистра. 2) Спецификация HTML5 использует заглавные буквы "DOCTYPE html" в своих примерах. Весь этот ответ, кажется, говорит о том, что одна заглавная буква соответствует литературе, даже если все они действительны. Почему это так возмутительно?
2
Я думаю, что @joshnh неправильно понял, что пытался сказать Джон. FWIW, я согласен с мнением Джона о том, что при отсутствии какой-либо конкретной причины для форматирования определенным образом, предпочтение отдается тому, о чем говорится в спецификации, которую проверяют браузеры. Джон никогда не пытался утверждать, что это более правильно, только то, что это то, на чем можно основывать свои предпочтения - иначе это совершенно произвольный выбор, верно?
Райан Уильямс
7
Верхний или нижний регистр является «правильным». Однако, если вы используете веб-шрифты и заботитесь о IE7, я бы рекомендовал использовать <!DOCTYPE html>из-за ошибки в IE7, когда веб-шрифты иногда не работают при использовании <!doctype html>(например, в этом ответе ).
W3Schools не имеет больше или меньше ошибок, чем другие сайты. ( Полностью случайный пример ) Возьмите информацию с небольшим количеством соли, обратитесь к страницам w3.org, если у вас возникнут сомнения, и все будет в порядке. Настоящие дураки - это те, кто считает, что W3Schools является официальным органом или что их сертификаты что-то значат.
Мистер Листер
8
@MrLister: Я не думаю, что было бы справедливо называть людей дураками, потому что они думают, что есть связь между чем-то под названием «W3Schools» и чем-то под названием «W3C». Оба достаточно похожи по имени и домену, чтобы вызвать путаницу, и предположение, что первое как-то подтверждается или связано с последним. Это явно намерение W3Schools, и это одна из причин, по которой они злят многих людей, которые понимают проблему. Тот факт, что большая часть их информации является неточной, усугубляет проблему (то есть это может быть немного простительно, если они действительно предоставят разумную услугу)
Бобби Джек,
Ссылка на tag_doctype.aspнедействительна (404), и этот вопрос касается doctypeобъявления, которое не является тегом ... В любом случае, вывод правильный: в HTML5 ключевое слово doctypeможет быть в верхнем, нижнем или смешанном регистре.
Авель
3
Вопрос вроде подразумевает, что есть только один правильный ответ, предлагает несколько вариантов выбора из двух и просит нас выбрать один. Я бы предположил, что для HTML5 оба <!DOCTYPE html>и <!doctype html>действительны.
Таким образом, браузер с поддержкой HTML5 будет принимать строчный и правильно обрабатывать HTML.
Я слышал, что браузеры, ранее не обращавшие внимания на HTML5, даже без доктайпа будут пытаться обрабатывать html настолько хорошо, насколько это возможно. И если они не распознают строчный, тип документа будет делать то же самое. Поэтому нет смысла делать его заглавным, так как эти браузеры в любом случае не смогут полностью реализовать любые объявления HTML5.
<!doctype html>
Ответы:
В HTML DOCTYPE нечувствителен к регистру. Следующие DOCTYPE действительны:
В XML-сериализациях (т.е. XHTML) DOCTYPE не требуется, но если вы используете его, он
DOCTYPE
должен быть в верхнем регистре:Смотрите XML-сериализацию HTML5, также известный как «XHTML5» :
источник
<title/foo/
было бы эквивалентно<title>foo</title>
. Только несколько валидаторов HTML используют SGML. Спецификация HTML5 - первая, которая проясняет это: whatwg.org/specs/web-apps/current-work/multipage/…html
). Вот полное предложение: «Вторая часть может быть написана в нижнем регистре (html
), верхнем регистре (HTML
) или даже в смешанном регистре (hTmL
) - все равно будет работать. Однако, чтобы соответствовать Рекомендациям по разметке полиглот для XHTML-документов, совместимых с HTML, его следует писать строчными буквами ».Если кто-то еще интересуется 2014 годом, пожалуйста, обратитесь к этому:
HTML5
W3 HTML5 Spec - Doctype
Примечание: несмотря на то, что спецификация отображается во всех заглавных буквах, она не чувствительна
-------------------------------------------------- --------------------
XHTML5
W3 HTML5 - XHTML
Глядя на спецификацию XML, в ней указаны DOCTYPE прописными буквами, но я не могу найти ничего, в котором говорится, что «все заглавные буквы» необходимы (для сравнения, в приведенной выше спецификации HTML5 он отображается в примере со всеми заглавными буквами, но спецификация прямо указывает, что регистр не учитывается ).
-------------------------------------------------- --------------------
Разметка полиглота
W3 Полиглот Разметка - Введение
W3 Полиглот Разметка - Доктип
Итак, обратите внимание, что разметка Ployglot использует обычный тип документа HTML5, но с дополнениями / изменениями. Для нашего обсуждения, наиболее заметно, что DOCTYPE объявлен во всех заглавных буквах .
-------------------------------------------------- --------------------
суммирование
Просмотреть раздел HTML против XHTML в W3
[Мнение] Я бы не стал слишком сильно беспокоиться о соответствии XML-требованиям, если вы не попытаетесь это сделать. Для разработки большинства клиентских и JS-серверов JSON заменил XML.
Поэтому я могу видеть, что это действительно применимо, если вы пытаетесь обновить существующую унаследованную систему на основе xhtml / xml, чтобы сосуществовать с новыми функциями HTML5. Если это так, посмотрите в спецификации разметки полиглота.
источник
Согласно последней спецификации , вы должны использовать что-то, для чего не учитывается регистр
<!DOCTYPE html>
. Таким образом, хотя браузеры должны поддерживать любой случай, который вы предпочитаете, разумно сделать вывод, что<!DOCTYPE html>
это канонический случай.источник
<!DOCTYPE html>
, поэтому было бы разумно сделать вывод, что автор спецификации имеет небольшое предпочтение для этой конкретной капитализации. Я собираюсь использовать ту же заглавную букву, что и в спецификации, поскольку неплохо, чтобы эти вещи были согласованными, но если вы предпочитаете,<!dOcTyPe
то будьте моим гостем :)Верхний или нижний регистр является «правильным». Однако, если вы используете веб-шрифты и заботитесь о IE7, я бы рекомендовал использовать
<!DOCTYPE html>
из-за ошибки в IE7, когда веб-шрифты иногда не работают при использовании<!doctype html>
(например, в этом ответе ).Вот почему я всегда прописываю прописные буквы.
источник
Стандарт HTML5 заключается в том, что теги нечувствительны к регистру.
http://www.w3schools.com/html5/tag_doctype.asp
Более технически: ( http://www.w3.org/TR/html5/syntax.html )
DOCTYPE должен состоять из следующих компонентов, в следующем порядке:
<!DOCTYPE
.источник
tag_doctype.asp
недействительна (404), и этот вопрос касаетсяdoctype
объявления, которое не является тегом ... В любом случае, вывод правильный: в HTML5 ключевое словоdoctype
может быть в верхнем, нижнем или смешанном регистре.Вопрос вроде подразумевает, что есть только один правильный ответ, предлагает несколько вариантов выбора из двух и просит нас выбрать один. Я бы предположил, что для HTML5 оба
<!DOCTYPE html>
и<!doctype html>
действительны.Таким образом, браузер с поддержкой HTML5 будет принимать строчный и правильно обрабатывать HTML.
Я слышал, что браузеры, ранее не обращавшие внимания на HTML5, даже без доктайпа будут пытаться обрабатывать html настолько хорошо, насколько это возможно. И если они не распознают строчный, тип документа будет делать то же самое. Поэтому нет смысла делать его заглавным, так как эти браузеры в любом случае не смогут полностью реализовать любые объявления HTML5.
источник
Объявление doctype нечувствительно к регистру, и любая строка ASCII, которая соответствует
Стандарт HTML5
источник