【问题标题】:How will a browser differentiate between XHTML 1.0 and XHTML 5?浏览器如何区分 XHTML 1.0 和 XHTML 5?
【发布时间】:2010-11-12 01:40:27
【问题描述】:

据我了解,XHTML(1.0、1.1)和 XHTML 5 都不需要 DTD。如果这是真的,浏览器将如何区分两者?

我只能假设当浏览器供应商支持 (X)HTML 5 时,所有 XHTML 都将按照 XHTML 5 规则进行解释(假设 XHTML 5 是 XHTML 1.0 的超集)。这就是它的工作方式吗?

【问题讨论】:

    标签: xhtml dtd xml-parsing


    【解决方案1】:

    没有 XHTML 5。目前有 HTML 4.01 和 XHTML 1.0。 There will be no XHTML 2.0。只有 HTML 5。HTML 5 不是 XML 标准(意味着 HTML 5 文档不是 XML 文档)。

    也许您正在查看HTML 5 + XML = XHTML 5。我想您可以将 HTML 5 表示为 XML,但据我所知这是非标准的。更具体地说,这只是文档树的序列化方法,而不是标准。

    要澄清这个问题,请查看HTML 5 and XHTML 5 - one vocabulary, two serializations。即使从标题上看,它也说“一个词汇,两个连载”。还有Conversation With X/HTML 5 Team

    XHTML 5 规范说“一般来说,作者是 不鼓励尝试使用 XML Web”。为什么要编写 XML 规范 XHTML 5 然后劝阻作者 从使用它?为什么不直接放弃 支持 XML (XHTML 5)?

    有些人会使用 XML HTML 5 无论我们做什么。这是一个简单的 要做的事——XML 是一种元语言 用于描述树结构,HTML 5 是树形结构,很明显 XML 可用于描述 HTML 5。 问题是如果我们不 指定它,然后每个认为 很明显,继续前进 它会以稍微不同的方式做到这一点 方式,我们将有一个 互操作性的噩梦。所以与其 我们咬紧牙关,定义它如何 如果人们这样做,就必须工作。

    XHTML 1.0 是一个标准。它与 HTML 4 不同。XHTML 5,如果你可以这么说的话,只不过是用 XML 格式表示 HTML 5 文档。

    【讨论】:

    • 你错了。 XHTML5 是 HTML 5 规范的一部分。见w3.org/TR/html5/introduction.html#html-vs-xhtml
    • 这不太正确。 HTML5 有一种 XML 序列化方法,尽管它具有特定于 XML 的功能(如名称空间),但它 HTML5 标准。该标准甚至表示强烈建议不要使用 XML,实际上只是将其包含在内,因为无论如何有些人会这样做。
    • 我明白你的意思。 w3 只提到了 HTML 5 + XML 作为序列化方法(w3.org/TR/2008/WD-html5-diff-20080122/#syntax),因此 HTML 5 和“XHTML 5”或 HTML 5 + XML 是相同的语言,只是有两种序列化方法。我认为我的问题仍然相关。
    • 小题外话:除了遗留支持之外,为什么强烈反对 XML 中的 HTML 5?我一直更喜欢语法的严格性以及 XML 解析器比标记汤更快地通过它的感觉。
    • @Abignale。请参阅经常引用的hixie.ch/advocacy/xhtml,了解不鼓励 XHTML 背后的原因。简而言之,使 XHTML 正确是非常困难的,以至于尝试它的人大多数都弄错了。这样做并没有什么好处。除非您有特定的原因,例如想解析生成的页面,实在不值得。与普遍认为的相反,没有证据表明 XML 解析器比 HTML 解析器更快。但是,如果您需要解析器,XML 解析器比同等的 HTML 解析器更广泛、更稳定且经过良好测试。
    【解决方案2】:

    来自http://hsivonen.iki.fi/xhtml2-html5-q-and-a/

    如果我可以为 XHTML5 使用任何 doctype,浏览器如何区分 XHTML 1.0 和 XHTML5?

    他们不能,也不需要。按照设计,实现 XHTML5 的用户代理将适当地处理以 XHTML 1.0 编写的输入。

    【讨论】:

      【解决方案3】:

      可以通过 DOCTYPE 来区分(HTML5 和 XHTML 1.x 不同),但它的存在在 XHTML5 中是非强制性的;和元素命名空间是一样的。所以,一般来说,没有很好的方法来区分它们。如果你想编写可移植的 XHTML5,我想提供 DOCTYPE 是你最好的选择。

      【讨论】:

      • Doctype 对于 XHTML 家族文档是可选的(它必须是这样你才能合理地混合命名空间)。
      • 我特别写了 DOCTYPE 在我的回答中是可选的(非强制性的)。然而,我的观点是,如果您确实编写它(并且您可以选择作为内容作者),浏览器处理它的可能性很大作为 XHTML5 的一个指标。
      • 浏览器过去没有关注过 Doctypes(除了作为智力测试来确定他们是否应该使用 Quirks 或 Standards 模式),我认为这种情况没有改变。
      • HTML5 的全部意义在于让浏览器供应商就应该如何做事情达成一致。这就是为什么它首先是由供应商编写的。如果规范中有某些内容,则很有可能会使用它。
      • 我不确定我是否同意最后的声明,但无论如何它没有实际意义 - 规范中没有 XHTML5 的 Doctype,事实上,规范明确指出没有标准一。
      【解决方案4】:

      浏览器不会。这些元素存在于同一个命名空间中,并且具有相同的含义,除了 WHATWG 决定更改它们的地方——例如 b 元素——浏览器将不得不应付。

      【讨论】:

      • 不确定你的意思。浏览器不关心元素的含义,只关心如何处理它们。 HTML 5 草案保留了对浏览器的处理向后兼容性,更改的语义仅影响尝试从标记中提取含义的工具。然而,AFAIK HTML 5 中元素的语义比 HTML 4 更窄,因此任何语义提取工具的最终结果都是 HTML 4 规则仍然适用,因为它们无法判断何时更窄的含义适用。
      猜你喜欢
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多