HTML5文档类型定义在哪里?

“旧的”HTML/XHTML 标准定义了一个 DTD (文档类型定义) :

HTML 4.01 http://www.w3.org/TR/html401/sgml/dtd.html
XHTML 1.0 < a href = “ http://www.w3.org/TR/xhtml1/dtds.html # a _ dtd _ XHTML-1.0-Strick”rel = “ nofollow noReferrer”> 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 团队为 XHTML5制作了一个 XML 模式。我想这回答了我的问题: 链接

27388 次浏览

正确。没有 DTD。但是,HTML5文档应该从 <!DOCTYPE html>开始 所以有个 DOCTYPE 但是没有 DTD。

参见:

我认为他们抛弃了旧的 DTD,现在我们只用: <!DOCTYPE HTML>开始 HTML 页面

也许 W3C 最终会推出一个。

没有 HTML5 DTD。在讨论 XHTML 序列化时,HTML5RC 显式地使用 这么说的,这显然也适用于 HTML 序列化。

HTML5的设计者认为 DTD 在表达能力方面太有限了,而 HTML5验证器(基本上是 http://validator.nu的 HTML5模式及其在 http://validator.w3.org/nu/的拷贝)使用模式和特别检查,而不是基于 DTD 的验证。

此外,HTML5的设计使得不可能为其编写 DTD。例如,没有 SGML 方法来捕获 HTML5规则,即任何以“ data-”开头并符合某些一般规则的属性名称都是有效的。在 SGML 中,属性需要单独列出,因此 DTD 需要是无限的。

设计与 HTML5对应的 DTD 可能会有一些省略,也可能会强加一些额外的规则,但它们不会真的是 HTML5 DTD。我的 实验的想法并不是很鼓舞人心: 太多的限制,太复杂,而且 DTD 需要非常宽松,以至于很多语法错误都无法捕捉到。

我已经创建了一个用于 PHP XML 项目的 HTML5DTD。它并不漂亮,但是它可以与结构良好的 XHTML5(即表示为 XML 的 HTML5)一起工作。

你可以从我的账户里拿:

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

好好享受吧!