首页 文章

HTML 5与XHTML 1.0 Transitional?

提问于
浏览
53

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

这令人困惑 . 为什么他们不只是将这些标签添加到XHTML?我们如何支持XHTML和HTML 5?

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

9 回答

  • 9

    嗯,一般来说HTML是SGML,XHTML是用XML表示的 . 因此,创建XHTML与HTML相比有更多限制(以标记的形式) . (SGML-based versus XML-based HTML

    Wikipedia中所述,HTML 5也将具有XHTML变体(XHTML 5) .

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

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

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

  • 96

    HTML5比XHTML 1.0更容易编写 .

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

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

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

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

    • charset声明更加简单 . 它只是<meta charset =“utf-8”> .

    • 如果您发现将void元素写为<name>会令人困惑,您可以根据需要使用<name /> .

    • HTML5在http://validator.nu/有一个非常好的验证器 . 验证者不是表达所有规则 .

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

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

    在语法方面,当您使用HTML5时,您最终会得到更清晰,更易于阅读的标记,这些标记始终会调用标准模式 . 当您使用XHTML 1.0(作为text / html)时,您将指定一堆浏览器将自动执行的crud(以验证蹩脚的dtd) .

  • -2

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

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

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

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

    • 如前所述,DTD只为IN BROWSERS提供一个目的,即区分标准合规模式和怪癖模式 . 因此它只影响样式和脚本 . 如果您在具有astrict doctype的页面上使用框架,它们将呈现正常 . 正如<embed>甚至<marquee>一样 - 即使后者是憎恶而前者不是任何现行标准 . 不过,它是HTML 5的一部分 .

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

  • 7

    您可能以错误的方式查看问题,因为relationship to XHTML 1.x部分,HTML 5指出:

    “此规范旨在取代XHTML 1.0作为规范定义HTML词汇表的XML序列化 . “

    现在这种语言是有争议的(XHTML 2工作组已经对它提出异议并且HTML工作组试图解决这些差异......)但这就是我们现在所处的位置 .

    几个笔记:

  • 3

    请记住,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尚未支持此功能 .

  • 4

    如果我在未来版本的Firefox中使用新的HTML 5标记但是使用DTD for XHTML,应该是什么行为?如果我将HTML 5标记与XHTML 1.0 Trans混合怎么办?

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

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

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

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

  • -2

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

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

  • 1

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

  • 28

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

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

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

相关问题