HTML 5与XHTML 1.0 Transitional?

看起来HTML 5将会被Firefox 3.1和其他浏览器支持(部分)。 它增加了对video和audio作为标签的支持,但这些是XHTML 1.0 Transitional无法识别的新标签。 如果我在未来的Firefox版本中使用新的HTML 5标记,但是使用DTD作为XHTML,那么这种行为应该是什么? 如果我将HTML 5标记与XHTML 1.0 Trans混合呢?

这变得令人困惑。 他们为什么不把这些标签添加到XHTML? 我们如何支持XHTML和HTML 5?

HTML 5上的video: http : //www.youtube.com/watch?v = xIxDJof7xxQ

那么,一般来说HTML是SGML,而XHTML是用XML表示的。 因此,创buildXHTML与HTML相比具有更多的限制(以标记的forms)。 ( 基于SGML的与基于XML的HTML )

正如维基百科上所提到的,HTML 5也会有一个XHTML变体(XHTML 5)。

经验法则:你应该总是使用有效的标记。 这也意味着你不应该使用XHTML 1.0 Transitional中提到的<video><audio>标签,因为那些标签不是那个规范的元素。 如果您确实需要使用这些标签(我非常怀疑),那么您应该确保使用HTML 5 / XHTML 5 DTD来指定您的文档在该DOCTYPE中。

在给定的实现状态(AFAIK,标准甚至没有解决,但是,正确?)使用HTML 5或XHTML 5可能会适得其反,因为几乎所有的用户可能看不到网站呈现correlated。

编辑2013年:由于最近downvotes,并且由于这个接受的答案不能被删除(我),我想补充说,HTML5的支持和标准化过程是现在完全不同于当我写这个答案五年前。 由于大多数主stream浏览器都支持HTML5草稿的大部分内容,而且由于很多东西可以在旧版浏览器中用polyfills修复,我现在主要使用HTML5。

HTML5比XHTML 1.0更容易编写。

  1. 您不必手动声明“ http://www.w3.org/1999/xhtml ”命名空间。

  2. 您不必将types属性添加到脚本和样式元素(它们默认为text / javascript和text / css)。

  3. 浏览器只是忽略了大部分内容,不必使用长文档。 您必须使用<!DOCTYPE html>,这很容易记住。

  4. 你没有select在文档types中包含或不包含一个dtd uri,你没有在过渡和严格之间做出select。 你只是有一个严格的文档types,调用完整的标准模式。 这样,您不必担心意外地处于几乎标准模式或怪癖模式。

  5. 字符集声明要简单得多。 这只是<meta charset =“utf-8”>。

  6. 如果你觉得把void元素写成<name>会让人困惑,如果你愿意的话,你可以使用<name />。

  7. HTML5在http://validator.nu/上有一个很好的validation器。; validation器不受不能expression所有规则的蹩脚DTD的约束。

  8. 您不必在内联脚本或样式表(在某些情况下)中添加// <![CDATA等)来validation。

  9. 如果需要,可以使用embedded。

就语法而言,当你使用HTML5的时候,你会得到更清晰,更容易阅读的标记,总是调用标准模式。 当你使用XHTML 1.0(作为text / html)时,你指定了一大堆crud(为了validation蹩脚的dtd),浏览器会自动执行。

神话和误解比比皆是。

  1. XHTML 1.0比HTML 5老。它不能使用任何新词汇。 事实上,它的主要卖点是它使用与HTML 4.01完全相同的词汇。

  2. 不会有XHTML 1.2 – 最有可能的。 这是不需要的。 XHTML 5是HTML 5的XML序列化。相同的词汇表,不同的parsing规则。

  3. HTML在浏览器中从来没有被视为真正的SGML。 没有浏览器曾经实现过符合SGML的parsing器。 HTML 5将把这个事实变成一个规则,HTML序列化将遵循今天的事实标准。 也许有人可能会说这是“SGML-ish”。

  4. 如前所述,DTD在浏览器中只有一个用途,那就是区分标准合规模式和怪癖模式。 因此它只影响样式和脚本。 如果您在具有严格文档types的页面上使用框架,则它们将呈现得很好。 即使后者是可憎的,前者也不符合任何现在的标准。 但它是HTML 5的一部分。

  5. 无论是序列化,XML还是HTML,都可以使用video和audio。 它们是HTML 5和XHTML 5的一部分。一旦parsing阶段结束,浏览器将构build文档的内部DOM。 不pipe序列化如何,DOM都将用于所有实际目的。 是的,无论文档types如何,使用text / html发送的XHTML仍然是正常的html。

您可能会以错误的方式来看问题,因为与XHTML 1.x部分HTML 5的关系如下:

“这个规范旨在取代XHTML 1.0,作为HTML词汇表的XML序列化的规范性定义。”

现在这种语言是有争议的(XHTML 2工作组已经对此提出了异议,而HTML工作组正在努力解决这些分歧…),但这正是我们现在的立场。

几个注意事项:

  • HTML 5包含一个被称为XHTML 5的XML序列化, 该规范解释了如果进入细节性细节的差异
  • HTML不是SGML。 Henri Sivonen在HTMLparsing的历史上做了很好的写作
  • 到目前为止(这是一个多次讨论的话题),HTML / XHTML 5将不会有DTD – 规范的一致性要求部分解释了为什么DTD不适合定义HTML语言。 HTML 5validation程序还包含有关此主题的丰富信息(包括HTML5的RELAX NG模式)

请记住,doctype只能用于浏览器的一个目的:在怪癖,几乎标准和标准模式之间切换。 因此,使用<video><audio>可以处理任何types的声明。 国际海事组织(IMO)使用XHTML文档types是无用的,因为你用text/html MIMEtypes发送的每个页面都被parsing为(tag-soup)HTML。 我build议使用HTML5的文档types( <!doctype html> ),因为它更容易记住,并且不会在没有任何理由的情况下迫使您使用XML语法。

他们为什么不把这些标签添加到XHTML?

他们实际上做了,HTML 5(XHTML5)的XML序列化。 要使用它,你必须发送一个XML MIMEtypes的页面,比如application/xhtml+xml 。 尽pipe如此,IE尚未支持。

如果我在未来的Firefox版本中使用新的HTML 5标记,但是使用DTD作为XHTML,那么这种行为应该是什么?

如果我将HTML 5标记与XHTML 1.0 Trans混合呢?

如果您的标记没有作为您select的DTD的一部分实现 – 那么在逻辑上,不应该遵循该标记。 但浏览器的实现并不总是严格的逻辑。

他们为什么不把这些标签添加到XHTML? 我们如何支持XHTML和HTML 5?

xHTML并不比HTML好,但它更适合于某些应用程序。 xHTML的一个主要优点是可以使用XSLT将其转换为不同的格式。 例如,您可以使用XSLT将xHTML自动转换为RSS提要或其他XML格式。

您不需要同时支持这两种格式 – 根据您的项目需求权衡各自的优点/缺点。 相当一段时间,HTML 5可能不会成为标准。

(X)HTML5只是下一个版本。 你应该使用XHTML1.1,直到XHTML5得到很好的支持。

您可能不应该使用HTML5的向后兼容性SGMLconfiguration文件。 它使刮板和小parsing器变得更难。

您的文档types会告诉浏览器您使用的是HTML5还是XHTML。 你不能只是从一个文档types的标签推到另一个文档的文档,并期望它的工作。 没有文档types,无论如何,这只是标签汤。

当99%的人无法在浏览器上正确查看video/audio标签时,不要使用video/audio标签等内容。 对于这两个例子中的任何一个,我都build议使用FLV。

至于为什么他们不把它添加到XHTML中…首先1.0不是最新的版本,1.1是刚刚发布的。

最终事情会变得标准化,我们将在两个标准中看到这些types的标签,但现在只是尽你所能确保最多的人可以查看您的内容。

据我所知,XHTML应该是一个更严格,更像XML的HTML实现。 为什么他们不能使HTML 5 == XHTML超越了我。

HTML5确实会被某些浏览器所支持,但那些使用(不太旧)版本(如IE7)的浏览器仍然不会看到videoaudio标签。

我希望Firefox能够弥合这种不兼容性,但是你仍然不应该使用它们一段时间。

当XHTML 1.2发布的时候,我希望它会包含来自HTML5的新元素。 这只是一个等待的问题。