HTML5文档类型定义在哪里?

Šim*_*das 64 html sgml html5 dtd

"旧"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 -视觉,网络developer.aspx

Juk*_*ela 61

没有HTML5 DTD.在讨论XHTML序列化时,HTML5 RC明确地说明了这一点,这显然也适用于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需要如此宽松,以至于许多语法错误都没有被捕获.

  • DTD是SGML和XML的东西.XML DTD在表达能力方面比SGML DTD更受限制; XML也是该领域SGML的简化. (2认同)
  • 这一切都是那么的不幸;有些事情是没有意义的,例如 body 标签内的 head 标签,或 span 内的 div。因此,应该有一种方法来验证您的 HTML 语法,就像当您犯逻辑错误时 JavaScript 会抛出逻辑错误一样。 (2认同)

Ada*_*dam 23

正确.没有DTD.但是,HTML5文档应该从一开始<!DOCTYPE html> 就是DOCTYPE,但没有DTD.

看到:

  • @ŠimeVidasDTD来自HTML的SGML根源.HTML5不再基于SGML,因此没有DTD. (5认同)
  • @Šime Vidas 好点。我不知道XHTML5。你是对的,应该可以创建一个。我快速搜索了一下是否有人制作了一个,我发现了 http://johndyer.name/post/HTML5-XHTML5-Validation-Schema-for-Visual-Studio-2008.aspx 和 HTML5 实体 http:// www.w3.org/2003/entities/2007/w3centities-f.ent (2认同)
  • @ pythonforspss.org浏览器从doctype知道该文档是HTML5.现代浏览器知道如何解释HTML5. (2认同)

小智 7

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

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

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

请享用!