它似乎HTML5会支持的(部分)的火狐3.1和其他浏览器。它是增加支持音频和视频作为标记,但这些都是新的标签,XHTML1.0过渡时期并不承认。什么是行为应该是,如果我使用一个新HTML5的标签,在一个未来的版本的火狐,但使用DTD XHTML?如果我混HTML5记XHTML1.0跨?

这是越来越令人困惑。他们为什么不只是添加这些标记XHTML?我们如何支持这两个XHTML和HTML5?

视频上的HTML5: http://www.youtube.com/watch?v=xIxDJof7xxQ

有帮助吗?

解决方案

嗯,一般来说HTML是SGML,XHTML是用XML表示的。因此,创建XHTML与HTML相比有更多限制(以标记的形式)。 (维基百科,HTML 5也将有一个XHTML变体(XHTML 5)。

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

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

编辑2013: 由于最近的downvotes,并且由于这个被接受的答案不能被删除(我),我想补充一点,HTML5的支持和标准化过程现在与我五年前写这个答案时的完全不同。由于大多数主流浏览器都支持HTML5草案的大部分内容,并且因为在旧浏览器中可以使用polyfill修复很多内容,所以我现在主要使用HTML5。

其他提示

HTML5比XHTML 1.0更容易编写。

  1. 您无需手动声明<!>“ http:// www .w3.org / 1999 / XHTML QUOT <!>;命名空间。

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

  3. 您不必使用长文档类型,浏览器只会忽略其中的大部分内容。你必须使用<!> lt;!DOCTYPE html <!> gt;,这很容易记住。

  4. 您无法选择在doctype中包含或不包含dtd uri,并且您无法在transitional和strict之间进行选择。您只需要一个严格的doctype来调用完整标准模式。这样,您就不必担心意外处于几乎标准模式或Quirks模式。

  5. charset声明更加简单。它只是<!> lt; meta charset = <!> quot; utf-8 <!> quot; <!> gt;。

  6. 如果您发现将void元素写为<!> lt; name <!> gt;会很困惑,您可以使用<!> lt; name / <!> gt;,如果您愿意。

  7. HTML5在 http://validator.nu/ 上有一个非常好的验证器。验证器不受无法表达所有规则的糟糕DTD的约束。

  8. 您无需在内联脚本或样式表(在某些情况下)中添加// <!> lt;![CDATA等]进行验证。

  9. 如果需要,您可以使用嵌入。

  10. 语法方面,当您使用HTML5时,您最终会使用更清晰,更易于阅读的标记,并始终调用标准模式。当你使用XHTML 1.0(作为text / html)时,你会指定一堆浏览器自动执行的crud(为了验证糟糕的dtd)。

这个话题中充斥着神话和误解。

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

  2. 最不可能是XHTML 1.2。而且不需要它。 XHTML 5是HTML 5的XML序列化。相同的词汇表,不同的解析规则。

  3. HTML在浏览器中从未被视为真正的SGML。没有浏览器实现过符合SGML的解析器。 HTML 5将这个事实变成一个规则,HTML序列化将遵循今天的事实标准。也许可以说它是<!>“SGML-ish <!>”。

  4. 正如已经说过的那样,DTD只为IN BROWSERS提供一个目的,那就是区分标准兼容模式和怪癖模式。因此它只影响样式和脚本。如果您在具有astrict doctype的页面上使用框架,它们将呈现正常。将<!> lt; embed <!> gt;甚至<!> lt; marquee <!> gt; - 即使后者是令人厌恶的,而前者不是任何现行标准。不过,它是HTML 5的一部分。

  5. 无论序列化,XML还是HTML,都可以使用视频和音频。它们是HTML 5和XHTML 5的一部分。一旦解析阶段结束,浏览器就会构建文档的内部DOM。无论序列化如何,DOM都将用于所有实际目的。是的,使用text / html发送的XHTML仍然是普通的html,无论doctype如何。

你可能是看问题的方式是错误的,因为 关系到XHTML1.x 部分,HTML5国:

"本规范的目的是取代XHTML1.0作为规范性的定义XML化HTML词汇"。

现在,语言是有争议的(XHTML2工作组有争议和HTML工作组正试图解决的差异...)但是,这是我们的现在。

几个注:

请记住,doctypes只能在浏览器中实现一个目的:在怪癖,几乎标准和标准模式之间切换。因此,使用<video><audio>将使用任何doctype声明。 IMO,使用XHTML doctype是没用的,因为你用text/html MIME类型发送的每个页面都被解析为(tag-soup)HTML。我建议使用HTML5 doctype(<!doctype html>),因为它更容易记住,并且没有理由不强迫您使用XML语法。

  

他们为什么不直接添加这些标签   XHTML?

他们确实这样做了,HTML 5(XHTML5)的XML序列化。要使用此功能,您必须使用XML MIME类型发送页面,例如application/xhtml+xml。但是,这还不是IE支持的。

  

如果是这样的行为是什么   我将来会使用新的HTML 5标记   Firefox的版本,但使用DTD   XHTML?

     

如果我混合HTML 5标记怎么办?   XHTML 1.0 Trans?

如果您的标记未作为所选DTD的一部分实现 - 那么从逻辑上讲,不应该遵循该标记。但浏览器实现并不总是严格合理的。

  

他们为什么不直接添加这些标签   XHTML?我们如何支持这两种XHTML   和HTML 5?

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

您不需要支持这两种格式 - 根据项目的要求权衡每种格式的优缺点。 HTML 5可能在相当长的一段时间内不会成为标准。

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

您可能不应该使用HTML5的向后兼容性SGML配置文件。它使刮刀和小解析器更难。

您的 doctype 会告诉浏览器您使用的是HTML5还是XHTML。您不能只将标签从一个doctype推送到另一个doctype的文档中,并期望它能够正常工作。 没有doctype,无论如何都只是标记汤。

当99%的人无法在浏览器上正确查看时,请勿使用视频/音频标签等内容。对于这两个例子中的任何一个,我建议使用FLV。

至于他们为什么不将它添加到XHTML ...首先1.0不是最新版本,1.1是不久前发布的。

最终事情变得标准化,我们会在两个标准中看到这些类型的标签,但现在就尽力确保最多的人可以查看您的内容。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top