HTML5文档types定义在哪里?
“旧”HTML / XHTML标准为其定义了一个DTD(文档types定义):
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指定了嵌套元素的规则 – “哪些types的元素可能出现在哪些types的元素中”。 我在这里为XHTML 1.0做了一个图表 (抱歉,我不再拥有这个资源)
我想用一个新版本来更新这个图表,这个新版本也包含了新的HTML5元素。 但是,似乎没有HTML5 DTD。 嵌套规则似乎是由HTML5中定义的各种内容模型定义的。
所以没有DTD,对吗?
后续问题: HTML5中没有DTD的原因是什么? DTD是为所有不同types的元素定义嵌套规则的好方法。 他们为什么不包括这样的事情呢?
更新:我发现这个: http : //www.w3.org/TR/html5/dom.html#kinds-of-content我想,这是最接近有一个DTD。
更新: Visual Studio团队为XHTML5制作了一个XML模式。 我想这回答我的问题: http : //blogs.msdn.com/b/webdevtools/archive/2009/11/18/html-5-intellisense-and-validation-schema-for-visual-studio-2008-and -视觉,networkingdeveloper.aspx
没有HTML5的DTD。 在讨论XHTML序列化时,HTML5 RC明确地说明了这一点 ,这也清楚地适用于HTML序列化。
HTML5的devise者认为DTD在performance力方面太有限了,HTML5validation器(基本上http://validator.nu的HTML5模式及其在http://validator.w3.org上的复制)使用模式和广告特别检查,而不是基于DTD的validation。;
而且,HTML5被devise成为它写DTD是不可能的。 例如,没有SGML方法来捕获HTML5规则,即任何以“data-”开头且符合某些通用规则的属性名称都是有效的。 在SGML中,属性需要单独列出,所以DTD需要是无限的。
有可能devise与HTML5相对应的DTD,但可能会有一些额外的规则,但实际上并不是HTML5 DTD。 我对这个想法的实验并不是很令人鼓舞:太多的限制太棘手,而且DTD需要如此宽容以至于很多语法错误都会被忽略。
正确。 没有DTD。 但是,HTML5文档应该以<!DOCTYPE html>
开头,所以有一个DOCTYPE,但没有DTD。
看到:
我已经创build了一个用于我的PHP XML项目的HTML5 DTD。 它不是很漂亮,但它与格式良好的XHTML5(也就是HTML5表示为XML)一起工作。
你可以从我的bitbucket帐户中抓取它:
https://bitbucket.org/kashbridge/dtd/overview
请享用!
sgmljs.net的某些Marcus 为HTML 5.1创build和分析了一个SGML DTD,并在XML-DEV邮件列表中启动了一个线程供审阅和讨论。 讨论围绕实体定义到目前为止。
我刚刚完成了对W3C HTML 5.1build议的分析( http://sgmljs.net/docs/html5.html (来自标记语言,而不是Web开发PoV)),我在这里发表它以供审查用于parsingHTML 5.1的初始SGML DTD以及冗长的分析文本。
[…]
我知道,WHATWG和W3C早已从SGML(和大多数与Web相关的规范工作中的XML)中分离出来,把它当作遗留技术,并在规范文本和其他地方以一种有些冒犯的态度来对待它。 但是,正如对HTML5语法的分析所显示的那样,他们基本上完全放弃了任何forms化方法的使用(至less在分析中讨论了两个缺陷)。
没有任何官方的,但也许这个举措将获得牵引力,或者至lessfind它的用户作为一个非官方的资源。
我认为他们已经废除了旧的DTD,现在我们只是用<!DOCTYPE HTML>
启动HTML页面
也许W3C会最终拿出一个。