为什么人们这样做?他们希望实现什么目标?为什么不为实际的XHTML文件保留XHTML doctype声明?
或者我错过了什么?
编辑:对于“实际的XHTML文件”是什么有一些混淆;为了证明差异不是由DOCTYPE声明引起的,比较this file到this one.第一个是HTML,第二个是XHTML,虽然内容相同;只有文件类型不同.两者都在兼容的浏览器中显示良好,但第一个用HTML解析器解析,第二个用XML解析器解析.
解决方法
Why put an XHTML doctype declaration on HTML files? What does that do?
所有这一切都是告诉标记验证者他们即将验证XHTML文档,而不是常规的,基于SGML的HTML文档.它描述了内容,或者更具体地说是后面的标记,但没有别的.
Why are people doing this? What do they hope to achieve? Why not reserve the XHTML doctype declaration for actual XHTML files?
Or am I missing something?
有点.实际发生的事情是,人们并不知道只是在HTML文档之上放置XHTML doctype声明并不会自动将其转换为XHTML文档,尽管这是每个人都希望的.
你看,大多数Web服务器和/或Web应用程序都没有配置为正确地将XHTML文档序列化为application / xhtml xml,而是选择将Web页面作为text / html提供服务. (对于服务器,它通常是因为.html文件扩展名比其他任何东西更重要,真的.)这导致浏览器决定他们收到一个普通的HTML文档,所以标签汤解析废话我们都知道和喜欢不可避免地随之而来.
请注意,即使您的XHTML文档上有这样的元标记也没关系:
<Meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
浏览器将忽略它,并且只查看与XHTML文档一起发送的实际HTTP Content-Type标头.
更糟糕的是,Internet Explorer作为XHTML鼎盛时期过去几年中最常用的浏览器,在版本9最终发布之前从未正确支持application / xhtml xml MIME类型:而不是解析标记,构建DOM和呈现页面,它所要做的就是要求下载文件.这不是一个非常有用的XHTML页面!
那么,猜猜在HTML5变得酷酷之前我们都必须忍受什么?
这与IE6在doctype声明之前使用XML声明的页面上的quirky一样,也是导致XHTML崩溃的最大因素之一(与XHTML 1.1一起从未得到广泛使用,XHTML 2.0被取消而支持HTML5 ).