a draft specification允许定义和使用自定义HTML元素。
由于此草案未提及XHTML5 polyglot documents,并且据我所知有效(as opposed to well-formed)XML文档需要DTD声明所有可能的元素,这是否意味着无法在自定义元素中包含自定义元素HTML5文档也将验证为XML?
答案 0 :(得分:2)
鉴于XML验证是针对DTD或架构进行的,但HTML5允许用户定义的元素和data-*
属性(并且根据您的要求,它本身就是一个活生生的标准),您的怀疑很可能是正确的 - 这两件事是不相容的。当然,可以去编写一个DTD /模式,通过考虑所有自定义元素和属性来满足他们的文档,并且它肯定会在最严格的术语中验证,但是这样做了不太合适。
好消息是,在多语言标记中,这不会成为一个问题。在多语言标记规范的section 3.1中,它说:
多语言标记 会导致:
- 有效的HTML文档。 [HTML5]
- 格式良好的XML文档。 [XML10]
当处理为HTML并且作为XML处理时,- 相同的DOM,但有一些值得注意的例外:HTML和XML解析器为某些
xml
(xml:lang
,xml:space
和{{生成不同的DOM 1}}),xml:base
(xmlns
和xmlns=""
)以及xmlns:xlink=""
(例如xlink
)属性。 XML要求和HTML5在某些位置允许这些属性,HTML解析器保留属性。该例外不得破坏有效HTML文档的要求。Polyglot Markup指定 强健语法 ,通过它可以最大化支持并最大限度地减少创作选择。
然而:
多语言标记不受约束:
- 是有效的XML。 [XML10]
- 符合任何XML DTD。
这意味着多语言标记符合HTML5环境,但不需要符合任何XML DTD才能工作。它只是HTML的序列化,而不是XML文档类型本身。事实上,XML验证的概念与多语言标记完全无关,正如XML验证与任何未声明与任何特定模式一致的XML文档无关。