HTML5文档类型定义在哪里?

问题描述 投票:63回答:5

“旧”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团队为XHTML5制作了XML Schema。我想这回答了我的问题: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

html html5 dtd sgml
5个回答
60
投票

没有HTML5 DTD。 HTML5 RC在讨论XHTML序列化时明确地讨论了says this,这显然也适用于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。我的experiment有这个想法并不是非常令人鼓舞:太多的限制,太棘手,DTD需要如此宽容,以至于许多语法错误都没有被捕获。


23
投票

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

看到:


7
投票

我已经创建了一个HTML5 DTD,用于我的PHP XML项目。它并不漂亮,但它适用于格式良好的XHTML5(即HTML5表示为XML)。

您可以在我的bitbucket帐户中获取它:

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

请享用!


2
投票

来自sgmljs.net的某些Marcus创建了analyzedSGML DTD for HTML 5.1并开始了thread in the XML-DEV mailing list的审查和讨论。到目前为止,讨论围绕实体定义。

我刚刚在http://sgmljs.net/docs/html5.html(来自标记语言而不是Web开发PoV)完成了对W3C HTML 5.1推荐的分析,并且我将它发布在这里以初始SGML DTD的形式进行审核,用于解析HTML 5.1,以及冗长的分析文本。

[…]

我知道WHATWG和W3C已经远离了SGML(以及大多数与Web相关的规范工作中的XML),将其视为一种传统技术,并且在规范文本和其他地方都有一些冒昧的态度。但是,正如对HTML5语法的分析所表明的那样,他们基本上完全放弃了对任何形式方法的使用(并且它至少表明了分析中讨论的两个缺陷)。

目前还没有任何官方消息,但也许这一举措将获得牵引力,或至少将其用户视为非官方资源。


0
投票

我认为他们取消了旧的DTD,现在我们只用<!DOCTYPE HTML>启动HTML页面

也许W3C最终会推出一款。

© www.soinside.com 2019 - 2024. All rights reserved.