54

似乎 Firefox 3.1 和其他浏览器将(部分)支持 HTML 5。它正在添加对视频和音频作为标签的支持,但这些是 XHTML 1.0 Transitional 无法识别的新标签。如果我在未来版本的 Firefox 中使用新的 HTML 5 标记,但对 XHTML 使用 DTD,应该是什么行为?如果我将 HTML 5 标记与 XHTML 1.0 Trans 混合使用会怎样?

这越来越令人困惑。他们为什么不直接将这些标签添加到 XHTML 中?我们如何同时支持 XHTML 和 HTML 5?

HTML 5 视频:http ://www.youtube.com/watch?v=xIxDJof7xxQ

4

9 回答 9

97

HTML5 比 XHTML 1.0 更容易编写。

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

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

  3. 您不必使用浏览器忽略大部分内容的长文档类型。您必须使用易于记忆的<!DOCTYPE html>。

  4. 您无法选择在文档类型中包含或不包含 dtd uri,并且您无法在过渡和严格之间进行选择。您只有一个调用完整标准模式的严格文档类型。这样,您就不必担心意外进入几乎标准模式或 Quirks 模式。

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

  6. 如果你觉得将 void 元素写成 <name> 会让人感到困惑,你可以根据需要使用 <name/>。

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

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

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

就语法而言,当您使用 HTML5 时,您最终会得到更清晰、更易于阅读的标记,该标记始终调用标准模式。当您使用 XHTML 1.0(作为 text/html 提供)时,您指定了浏览器将自动执行的一堆杂乱无章(以针对糟糕的 dtd 进行验证)。

于 2008-11-02T18:11:11.300 回答
28

在这个线程中,神话和误解比比皆是。

  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 在浏览器中仅用于一个目的,即区分标准遵从模式和怪癖模式。因此它只影响样式和脚本。如果您在具有严格文档类型的页面上使用框架,它们将呈现得很好。<embed> 甚至 <marquee> 也一样——尽管后者是可憎的,而前者不在任何当前标准中。不过,它是 HTML 5 的一部分。

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

于 2008-11-02T18:24:08.780 回答
10

嗯,一般来说 HTML 是 SGML,而 XHTML 是用 XML 表示的。因此,与 HTML 相比,创建 XHTML 受到更多限制(以标记的形式)。(基于 SGML 的 HTML 与基于 XML 的 HTML

Wikipedia中所述,HTML 5 也将有一个 XHTML 变体 (XHTML 5)。

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

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

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

于 2008-11-02T16:00:24.717 回答
7

您可能以错误的方式看待问题,因为与XHTML 1.x部分的关系,HTML 5 指出:

“本规范旨在取代 XHTML 1.0 作为 HTML 词汇的 XML 序列化的规范定义。”

现在这种语言是有争议的(XHTML 2 WG 对它提出了异议,HTML WG 正在尝试解决这些差异......)但这就是我们现在的立场。

几点注意事项:

于 2008-11-02T18:59:22.607 回答
4

请记住,文档类型在浏览器中仅用于一个目的:在怪癖、几乎标准和标准模式之间切换。因此,使用<video>and<audio>将适用于任何 doctype 声明。IMO,使用 XHTML doctype 是非常没用的,因为您发送的每个具有text/htmlMIME 类型的页面都会被解析为(tag-soup)HTML。我建议使用 HTML5 doctype ( <!doctype html>),因为它更容易记住并且不会无缘无故地强迫您使用 XML 语法。

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

他们确实做到了,有一个 HTML 5 (XHTML5) 的 XML 序列化。要使用它,您必须使用 XML MIME 类型发送您的页面,例如application/xhtml+xml. 不过,IE (尚)不支持此功能。

于 2008-11-02T16:58:34.193 回答
3

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

如果我将 HTML 5 标记与 XHTML 1.0 Trans 混合使用会怎样?

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

他们为什么不直接将这些标签添加到 XHTML 中?我们如何同时支持 XHTML 和 HTML 5?

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

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

于 2008-11-02T16:35:36.877 回答
1

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

您可能不应该使用 HTML5 的向后兼容 SGML 配置文件。它使爬虫和小型解析器变得更加困难。

于 2009-02-27T18:15:05.297 回答
-2

您的文档类型将告诉浏览器您使用的是 HTML5 还是 XHTML。您不能只是将一个 doctype 中的标签推入另一种 doctype 的文档中并期望它起作用。如果没有 doctype,这一切都只是标签汤。

于 2008-11-02T15:13:02.237 回答
-2

当 99% 的人无法在浏览器上正常查看时,不要使用视频/音频标签之类的东西。对于这两个示例中的任何一个,我建议使用 FLV。

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

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

于 2008-11-02T15:14:13.327 回答