【问题标题】:Are HTML5 custom elements compatible with an XML (polyglot) serialization?HTML5 自定义元素是否与 XML(多语言)序列化兼容?
【发布时间】:2015-07-12 22:23:23
【问题描述】:

a draft specification 允许定义和使用自定义 HTML 元素。

由于该草案没有提及XHTML5 polyglot documents,并且据我所知,有效的 (as opposed to well-formed) XML 文档需要一个 DTD 来声明所有可能的元素,这是否意味着不可能在 HTML5 文档中包含自定义元素也验证为 XML?

【问题讨论】:

    标签: xml html polyglot-markup


    【解决方案1】:

    鉴于 XML 验证是针对 DTD 或模式进行的,但 HTML5 允许用户定义元素和 data-* 属性(无论如何,它本身就是一种生活标准,这取决于你问谁),你的怀疑很可能是正确的——这些两件事是不相容的。诚然,可以编写一个 DTD/模式,通过考虑所有自定义元素和属性来满足他们的文档需求,并且它肯定会在最严格的术语意义上进行验证,但事实并非如此有效。

    好消息是,在多语言标记中,这不会成为问题。在多语言标记规范的section 3.1 中,它说:

    多语言标记导致:

    • 有效的 HTML 文档。 [HTML5]
    • 格式良好的 XML 文档。 [XML10]
    • 作为 HTML 处理和作为 XML 处理时的 DOM 相同,但有一些值得注意的例外:HTML 和 XML 解析器为某些 xmlxml:langxml:spacexml:base)、xmlns 生成不同的 DOM (xmlns=""xmlns:xlink="")和xlink(如xlink:href)属性。 XML 需要并且 HTML5 允许在某些位置使用这些属性,并且这些属性由 HTML 解析器保留。例外不得违反作为有效 HTML 文档的要求。

    Polyglot 标记指定了一个稳健语法,这意味着它是一种最大限度地支持并最大限度地减少创作选择的语法。

    但是:

    多语言标记不受限制:

    • 是有效的 XML。 [XML10]
    • 符合任何 XML DTD。

    这意味着多语言标记在情况下符合 HTML5,但不需要符合任何 XML DTD 即可工作。它只是 HTML 的序列化,而不是其本身的 XML 文档类型。 XML 验证的概念实际上与多语言标记完全无关,就像 XML 验证与任何未声明符合任何特定模式的 XML 文档无关一样。

    【讨论】:

    • 多语言文档必须成为有效的 XML,但它可能(带有自定义元素)吗?
    • @lxgr:更新了我的答案。我对你的问题深有感触,但除了“你的断言是正确的”之外,我似乎不能提供太多东西。也许其他人将能够提供更令人满意的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2012-06-08
    相关资源
    最近更新 更多