Где находится определение типа документа HTML5? - PullRequest
63 голосов
/ 29 октября 2010

Для "старых" стандартов 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

Ответы [ 5 ]

60 голосов
/ 06 марта 2013

Нет HTML5 DTD. HTML5 RC явно говорит это при обсуждении сериализации XHTML, и это явно относится и к сериализации HTML.

DTD были расценены разработчиками HTML5 как слишком ограниченные в выразительной силе, и валидаторы HTML5 (в основном режим HTML5 http://validator.nu и его копия в http://validator.w3.org/nu/) используют схемы и специальные проверки , а не проверка на основе DTD.

Более того, HTML5 был разработан таким образом, что написание DTD для него невозможно. Например, не существует способа SGML для захвата правила HTML5, в котором допустимо любое имя атрибута, начинающееся с «data-» и соответствующее определенным общим правилам. В SGML атрибуты должны указываться отдельно, поэтому DTD должен быть бесконечным.

Можно проектировать DTD, которые соответствуют HTML5, с некоторыми упущениями и, возможно, с некоторыми дополнительными правилами, но на самом деле они не будут DTD для HTML5. Мой эксперимент с идеей не очень обнадеживает: слишком много ограничений, слишком сложно, и DTD должен быть настолько разрешающим, что многие синтаксические ошибки останутся незамеченными.

23 голосов
/ 29 октября 2010

Правильно.Там нет DTD.Однако документы HTML5 должны начинаться с <!DOCTYPE html>. Таким образом, существует DOCTYPE, но нет DTD.

См .:

7 голосов
/ 16 февраля 2015

Я создал HTML5 DTD для использования в моих проектах PHP XML. Это не красиво, но работает с правильно сформированным XHTML5 (то есть HTML5 выражается в виде XML).

Вы можете получить его из моей учетной записи Bitbucket здесь:

https://bitbucket.org/kashbridge/dtd/overview

Наслаждайтесь!

1 голос
/ 19 ноября 2016

Определенный Маркус из 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 вместе с длинным анализ текста.

[...]

Я знаю, что WHATWG и W3C с тех пор давно отошли от SGML. (и XML в большинстве веб-спецификаций), рассматривая его как устаревшая техника и с несколько самонадеянным отношением в текст спецификации и в других местах. Но, как анализ HTML5 грамматические шоу, они по существу отказались от использования каких-либо формальных методов в целом (и это показывает, по крайней мере, в двух недостатках, обсуждаемых в анализ).

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

0 голосов
/ 29 октября 2010

Я думаю, что они покончили со старыми DTD, теперь мы просто начинаем HTML-страницы с: <!DOCTYPE HTML>

Может быть, W3C в конце концов выпустит его.

...