Где находится определение типа документа HTML5?
Вопрос
В «старых» стандартах HTML/XHTML для них определено DTD (определение типа документа):
HTML 4.01 http://www.w3.org/TR/html401/sgml/dtd.html
XHTML 1.0 http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_XHTML-1.0-Strict
Эти DTD определяют правила вложения элементов - «какие типы элементов могут появляться в каких типах элементов».Я сделал диаграмму для XHTML 1.0 здесь. (извините, у меня больше нет этого ресурса)
Я хотел бы обновить эту диаграмму новой версией, которая также включает новые элементы HTML5.Однако, похоже, HTML5 DTD не существует.Похоже, что правила вложения определяются различными моделями контента, определенными в HTML5.
Значит, DTD нет, верно?
Последующий вопрос: Есть ли причина, по которой в HTML5 нет DTD?DTD — отличный метод определения правил вложения для всех типов элементов.Почему бы им не включить такую вещь?
Обновлять: Я нашел это: http://www.w3.org/TR/html5/dom.html#kinds-of-content Я думаю, это наиболее близко к DTD.
Обновлять: Команда Visual Studio создала XML-схему для XHTML5.Думаю, это ответ на мой вопрос: http://blogs.msdn.com/b/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio-2008-and-visual-web-developer. aspx
Решение
HTML5 DTD не существует.HTML5 RC явно говорит это при обсуждении сериализации XHTML, и это явно относится и к сериализации HTML.
Разработчики HTML5 считали DTD слишком ограниченными в выразительных возможностях, а валидаторы HTML5 (по сути, режим HTML5 http://validator.nu и его копия на http://validator.w3.org/nu/) используйте схемы и специальные проверки, а не проверку на основе DTD.
Более того, HTML5 устроен так, что написать для него DTD невозможно.Например, не существует способа SGML отразить правило HTML5, согласно которому любое имя атрибута, начинающееся с «data-», и соответствующее определенным общим правилам, является допустимым.В SGML атрибуты необходимо перечислять индивидуально, поэтому DTD должен быть бесконечным.
Можно разработать DTD, соответствующие HTML5, с некоторыми пропусками и, возможно, с некоторыми дополнительными правилами, но на самом деле они не будут DTD HTML5.Мой эксперимент идея не очень обнадеживает:слишком много ограничений, слишком сложно, и DTD должно быть настолько либеральным, что многие синтаксические ошибки останутся незамеченными.
Другие советы
Правильный.ДТД нет.Однако документы HTML5 должны начинаться с <!DOCTYPE html>
Итак, DOCTYPE есть, но нет DTD.
Видеть:
Я создал HTML5 DTD для использования в своих проектах PHP XML.Это некрасиво, но работает с правильно сформированным XHTML5 (то есть HTML5, выраженным как XML).
Вы можете получить его из моей учетной записи Bitbucket здесь:
https://bitbucket.org/kashbridge/dtd/overview
Наслаждаться!
Некий Маркус с sgmljs.net создал и проанализировано а SGML DTD для HTML 5.1 и начал ветка в списке рассылки XML-DEV для ознакомления и обсуждения.Пока что дискуссия вращается вокруг определений сущностей.
Я только что завершил анализ рекомендаций W3C по HTML 5.1 на сайте http://sgmljs.net/docs/html5.html (из языка разметки, а не в веб -разработке POV), и я публикую его здесь для обзора в форме начального SGML DTD для анализа HTML 5.1, а также длинный текст анализа.
[…]
Я знаю, что с тех пор, как-W3C давно отошли от SGML (и XML в большинстве работ, связанной с веб-сайтами), рассматривая его как устаревшую технику и с довольно самонадеянным отношением в тексте спецификации и в других местах.Но, как показывает анализ грамматики HTML5, они по существу отказались от использования любых формальных методов Alltogether (и это показывает, по крайней мере, в двух недостатках, обсуждаемых в анализе).
Пока ничего официального, но, возможно, эта инициатива получит поддержку или, по крайней мере, найдет своих пользователей в качестве неофициального ресурса.
Я думаю, что они покончили со старыми DTD, теперь мы просто начинаем HTML-страницы с: <!DOCTYPE HTML>
Возможно, W3C в конечном итоге выпустит такой вариант.