HTML5 自定义元素是否与 XML(多语言)序列化兼容?

Are HTML5 custom elements compatible with an XML (polyglot) serialization?

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

因为这个草案没有提到 XHTML5 polyglot documents, and to my knowledge valid (as opposed to well-formed) XML 文档需要一个 DTD 声明所有可能的元素,这是否意味着不可能在 HTML5 中包含自定义元素也将验证为 XML?

的文档

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

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

Polyglot markup results in:

  • a valid HTML document. [HTML5]
  • a well-formed XML document. [XML10]
  • identical DOMs when processed as HTML and when processed as XML, with some notable exceptions: HTML and XML parsers generate different DOMs for some xml (xml:lang, xml:space, and xml:base), xmlns (xmlns="" and xmlns:xlink=""), and xlink (such as xlink:href) attributes. XML requires and HTML5 permits these attributes in certain locations and the attributes are preserved by HTML parsers. The exception must not break the requirement to be a valid HTML document.

Polyglot Markup specifies a Robust Syntax, by which it is meant a syntax that maximizes support and minimizes authoring choice.

但是:

Polyglot markup is not constrained:

  • to be valid XML. [XML10]
  • by conformance to any XML DTD.

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