“旧”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
我想用包含新HTML5元素的新版本更新该图。但是,似乎没有HTML5 DTD。似乎嵌套规则是由HTML5中定义的各种内容模型定义的。
HTML5中没有DTD的原因是什么?DTD是为所有不同类型的元素定义嵌套规则的好方法。为什么他们不包括这样的事情?
发布于 2018-04-08 13:40:37
没有HTML5 DTD。在讨论XHTML序列化时,HTML5 RC明确地说明了这一点,这也明显适用于HTML序列化。
HTML5的设计者认为DTD在表现力方面太有限了,HTML5验证器使用模式和广告特别检查,而不是基于DTD的验证。
而且,HTML5的设计使得为它写DTD是不可能的。例如,没有SGML方法来捕获HTML5规则,即任何以“data-”开头且符合某些常规规则的属性名称都是有效的。在SGML中,属性需要单独列出,所以DTD需要是无限的。
有可能设计与HTML5相对应的DTD,但可能会有一些额外的规则,但它们并不是真正的HTML5 DTD。太多的限制太棘手,而且DTD需要如此宽容,以至于很多语法错误都会被忽略。
发布于 2018-04-08 14:42:50
没有DTD。但是,HTML5文档应该从头开始<!DOCTYPE html>
所以有一个DOCTYPE,但没有DTD。
https://stackoverflow.com/questions/-100007989
复制相似问题