HTML 4,HTML 5,XHTML,MIME类型 - 权威资源

时间:2010-04-18 14:20:50

标签: html xhtml html5 mime-types

HTML与XHTML和XHTML作为text / html与XHTML作为XHTML的主题相当复杂。不幸的是,很难得到一个完整的图片,因为信息主要是在网络上的点点滴滴传播,或深埋在W3C技术术语中。此外还有一些错误信息正在传播。我建议将此作为关于该主题的权威SO资源,描述最重要的方面:

  • HTML 4
  • HTML 5
  • XHTML 1.0 as text / html,application / xml + xhtml
  • XHTML 1.1 as application / xml + xhtml

每个人的实际意义是什么? 常见的陷阱是什么? 每种适当的MIME类型的重要性是什么? 不同的浏览器如何处理它们?

我希望每项技术都能找到一个答案。我正在制作一个社区维基,所以请编辑答案以完成图片,而不是提供多余的答案。随意从存根开始。也可以随意编辑这个问题。

5 个答案:

答案 0 :(得分:38)

答案 1 :(得分:3)

XHTML

QA

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>

浏览器支持

  • XHTML as text / html得到了很好的支持,但你必须跳过compatibility箍。如果没有跳过这些箍,完全有效的页面可能无法呈现(例如<script type="text/javascript" src="foo" />导致文档的其余部分被视为脚本而不是HTML)或显示其他问题。
  • XHTML as application / xhtml + xml得到了大多数浏览器的良好支持(可能存在小错误)。它在Internet Explorer&lt; = 8。
  • 中根本不起作用

MIME类型application / xhtml + xml vs text / 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>元素,具体取决于内容类型)。基本上,生成两个几乎相同的文档需要做很多工作。

XHTML和Javascript

当使用适当的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

使用XHTML(作为application / xhtml + xml)

的优点
  • 允许直接交错其他XML格式,如MathML和SVG。
  • 理论上解析速度更快。但实际上差异可以忽略不计。

*段落需要一些抛光。

答案 2 :(得分:2)

HTML

QA

  • HTML5仍有相当不成熟的QA工具
  • HTML 4已经存在很长时间了,并且有非常成熟的QA工具

浏览器支持

  • HTML 5 - 各种浏览器都支持比特和片段。你需要Javascript来支持大多数事情,如果Javascript不可用,基本结构元素(如<section>)会非常糟糕。 *
  • 支持HTML 4

*需要一些澄清和示例。

答案 3 :(得分:1)

严格与过渡与框架集

为什么?

HTML和XHTML有不同的风格,即StrictTransitionalFrameset。每个“方言”指定允许使用的一组不同元素。

使用Strict跳入深层限制了一些开箱即用的选项(例如not being able to specify target attributes),这使得许多选项无法使用。

主要差异

  

请展开

答案 4 :(得分:-5)

它真的不那么复杂,而且它真的无关紧要。

  • HTML和XHTML仅在语法上有所不同。
  • 您无法将XHTML作为XML提供给Internet Explorer,并且您不会在其他浏览器中获得任何好处。

你还需要知道什么?