Š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需要如此宽松,以至于许多语法错误都没有被捕获.
Ada*_*dam 23
正确.没有DTD.但是,HTML5文档应该从一开始<!DOCTYPE html>
就是DOCTYPE,但没有DTD.
看到:
小智 7
我已经创建了一个HTML5 DTD,用于我的PHP XML项目.它并不漂亮,但它适用于格式良好的XHTML5(即HTML5表示为XML).
您可以在我的bitbucket帐户中获取它:
https://bitbucket.org/kashbridge/dtd/overview
请享用!