При написанні доктрипу HTML5 який правильний метод?
<!DOCTYPE html>
або
<!doctype html>
<!doctype html>
При написанні доктрипу HTML5 який правильний метод?
<!DOCTYPE html>
або
<!doctype html>
<!doctype html>
Відповіді:
У 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
) - вона все одно спрацює. Однак, щоб відповідати Правилам розмітки поліглотів для XHTML-сумісних документів , сумісних з HTML , слід писати в малі літери.
<title/foo/
було б рівнозначно <title>foo</title>
. Лише кілька валідаторів HTML використовують SGML. Специфікація HTML5 першою пояснила
html
). Ось повне речення: "Другу частину можна записати в малі ( html
), великі літери ( HTML
) або навіть у змішаному регістрі ( hTmL
) - вона все одно спрацює. Однак, щоб відповідати Правилам розмітки поліглоту для XHTML-сумісних документів, сумісних з HTML, його слід писати в малі регістри. "
Якщо хтось все ще цікавиться у 2014 році, будь ласка, зверніться до цього:
HTML5
Спеціальність W3 HTML5 - Doctype
DOCTYPE повинен складатися з таких компонентів у такому порядку:
1. A string that is an ASCII case-insensitive match for the string "<!DOCTYPE".
...
Примітка: незважаючи на те, що відображається у всіх кришках, специфікація стверджує, що вона нечутлива
XHTML5
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 - Вступ
Іноді важливо вміти обслуговувати документи HTML5, які також є добре сформованими XML-документами.
Розмітка поліглотів W3 - Доктип
Для розмітки поліглоту використовується декларація типу документа (DOCTYPE), визначена розділом 8.1.1 [HTML5]. Крім того, DOCTYPE відповідає таким правилам:
* The string DOCTYPE is in uppercase letters.
Отже, зауважте, що розмітка Ployglot використовує звичайний дотип HTML5, але з доповненнями / змінами. Для нашого обговорення, особливо важливо, що DOCTYPE оголошено у всіх великих шарах .
Підсумовування
Перегляньте розділ HTML W3 проти XHTML
[Думка] Я б не надто хвилювався щодо задоволення відповідності 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, який відповідає