HTML与XHTML和XHTML作为text / html与XHTML作为XHTML的主题相当复杂。不幸的是,很难得到一个完整的图片,因为信息主要是在网络上的点点滴滴传播,或深埋在W3C技术术语中。此外还有一些错误信息正在传播。我建议将此作为关于该主题的权威SO资源,描述最重要的方面:
每个人的实际意义是什么? 常见的陷阱是什么? 每种适当的MIME类型的重要性是什么? 不同的浏览器如何处理它们?
我希望每项技术都能找到一个答案。我正在制作一个社区维基,所以请编辑答案以完成图片,而不是提供多余的答案。随意从存根开始。也可以随意编辑这个问题。
答案 0 :(得分:38)
答案 1 :(得分:3)
XHTML具有成熟的QA工具,但更宽松的DTD(例如<textarea rows=""
是HTML 4.01和XHTML 1.0中的一致性错误,但只是HTML 4.01 *
中的有效性错误)。尽管XHTML 1.0理论上是HTML 4.01表示为XML。存在许多差异,这些差异未在规范的“Differences with HTML 4”部分中记录。
当提供MIME类型为application / xhtml + xml(见下文)时,XHTML文档需要100%符合XML标准,即它需要是“格式良好的XML”。即使是单个未转义的&符号也可能导致解析器(浏览器)发出警告并拒绝呈现文档。在创建可能包含第三方提供的内容的动态XHTML网站(例如任何用户输入)时,需要非常小心地转义任何和所有无效字符序列,不允许无效标签或属性以及正确嵌套所有元素。 / p>
<script type="text/javascript" src="foo" />
导致文档的其余部分被视为脚本而不是HTML)或显示其他问题。作为text / html的XHTML既不是XHTML也不是HTML。它被浏览器像HTML一样处理,但由于它不是HTML,因此它被视为标签汤。由于Internet Explorer不知道如何使用application / xhtml + xml处理XHTML,因此只需将IE作为text / html提供。这意味着XHTML for IE总是标记汤,除非HTML和XHTML之间的差异也趋于一致(参见Differences with HTML 4)。
欢迎来到痛苦的世界。您会遇到下游代理问题(您必须根据您执行条件的任何请求标头来改变缓存)。文档结构发生变化(例如,没有<tbody>
标记的表可能有也可能没有<tbody>
元素,具体取决于内容类型)。基本上,生成两个几乎相同的文档需要做很多工作。
当使用适当的application / xhtml + xml MIME类型解析XHTML文档时,通过Javascript操作DOM元素可能会有所不同。某些未正确准备的脚本可能在XHTML环境中以不同的方式工作或失败
示例:在HTML下,像console.log(document.body.tagName);
这样的JavaScript命令会输出“BODY”,而XHTML下的相同命令会输出“body”。
如果您在标记中有<table><tr>..</tr></table
,那么JavaScript中的表格firstChild
将是XHTML中的tr
,而是HTML中的TBODY
。
*
段落需要一些抛光。
答案 2 :(得分:2)
<section>
)会非常糟糕。 *
*
需要一些澄清和示例。
答案 3 :(得分:1)
HTML和XHTML有不同的风格,即Strict
,Transitional
和Frameset
。每个“方言”指定允许使用的一组不同元素。
使用Strict
跳入深层限制了一些开箱即用的选项(例如not being able to specify target
attributes),这使得许多选项无法使用。
请展开
答案 4 :(得分:-5)
它真的不那么复杂,而且它真的无关紧要。
你还需要知道什么?