提问人:lxgr 提问时间:7/12/2015 最后编辑:Communitylxgr 更新时间:7/12/2015 访问量:61
HTML5 自定义元素是否与 XML(多语言)序列化兼容?
Are HTML5 custom elements compatible with an XML (polyglot) serialization?
问:
有一个规范草案允许定义和使用自定义 HTML 元素。
由于此草案没有提到 XHTML5 多语言文档,并且据我所知,有效(而不是格式正确的)XML 文档需要声明所有可能元素的 DTD,这是否意味着不可能在 HTML5 文档中包含自定义元素,而这些元素也将验证为 XML?
答:
2赞
BoltClock
7/12/2015
#1
鉴于 XML 验证是针对 DTD 或模式进行的,但 HTML5 允许用户定义的元素和属性(无论如何,它本身就是一个生活标准,这取决于你问谁),你的怀疑很可能是正确的——这两件事是不兼容的。当然,人们可以编写一个DTD/模式,通过考虑所有自定义元素和属性来迎合他们的文档,它肯定会在最严格的意义上进行验证,但事实并非如此。data-*
好消息是,在多语言标记中,这不会成为问题。在多语言标记规范的第 3.1 节中,它说:
多语言标记的结果如下:
- 有效的 HTML 文档。[HTML5的]
- 格式正确的 XML 文档。[XML10]
- 当作为 HTML 处理和作为 XML 处理时,相同的 DOM,但有一些值得注意的例外:HTML 和 XML 解析器为某些 (、、和)、(和)和(例如)属性生成不同的 DOM。XML 需要 HTML5 在某些位置允许这些属性,并且这些属性由 HTML 解析器保留。该例外不得违反成为有效 HTML 文档的要求。
xml
xml:lang
xml:space
xml:base
xmlns
xmlns=""
xmlns:xlink=""
xlink
xlink:href
多语言标记指定了鲁棒语法,它是指最大化支持和最小化创作选择的语法。
然而:
多语言标记不受约束:
- 为有效的 XML。[XML10]
- 符合任何 XML DTD。
这意味着多语言标记在某些情况下符合 HTML5,但不需要符合任何 XML DTD 即可工作。它只是 HTML 的序列化,而不是 XML 文档类型本身。实际上,XML 验证的概念与多语言标记完全无关,就像 XML 验证与任何未声明符合任何特定架构的 XML 文档无关一样。
评论
0赞
lxgr
7/12/2015
多语言文档不一定是有效的 XML,但是否可以(使用自定义元素)?
0赞
BoltClock
7/12/2015
@lxgr:更新了我的答案。我问了你的问题,但除了“你的断言是正确的”之外,我似乎无法提供太多。也许其他人能够提供更令人满意的答案。
上一个:W3C 不再维护多语言标记?
下一个:如何在XML中使用元视口?
评论