【问题标题】:With XHTML namespaces, should each attribute have a namespace too?对于 XHTML 命名空间,每个属性是否也应该有一个命名空间?
【发布时间】:2011-07-18 11:18:58
【问题描述】:

当为一个非常简单的 CMS 扩展 XHTML 时,我想知道是否应该使用

<cms:include document="foo/bar" />

<cms:include cms:document="foo/bar" />

给定一个文件声明如下:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:cms="http://spongegroup.com/ns/cms">

(基本上这个想法是制作一个简单的解析器,将一些 XHTML 标记列入白名单,并添加几个我自己的)。

cms: 命名空间中已有元素的属性是否需要 cms: 前缀?

【问题讨论】:

    标签: xml xhtml


    【解决方案1】:

    cms:元素的属性不需要cms:前缀,因为这些属性的含义是由它们所属的元素决定的。

    参见XML namespace recommendation:“无前缀属性的解释由它们出现的元素决定”。

    然而,从技术上讲,不带前缀的属性属于 null 命名空间。

    答案于 2011-06-06 编辑,以纠正误导性句子。感谢评论者。

    【讨论】:

    • "默认情况下,给定元素的 XML 属性属于该元素的命名空间"。这要么是错误的,要么是误导性的。无前缀属性始终位于 null 命名空间,而不是它们所属元素的 XML 命名空间。您给出的引用意味着该属性已被其所属的元素充分限定,而不是它采用元素的命名空间。您是正确的,该属性不需要分配前缀或命名空间。
    • 谢谢大家...对我来说似乎是一个微妙的区别,但我不需要在每个属性上加上 ns: 前缀。
    • 投反对票,因为答案完全错误 - 请改写。 Alochi 是正确的;默认情况下,属性位于 null 命名空间中。在尝试使用 XSLT 之类的东西时,如果没有意识到这一点会导致严重的问题。
    • 我部分改写了答案以纠正误导性的句子。
    • 好的。我仍然不会使用“足够合格”这个短语,因为当您真正的意思是“消除歧义”或类似的东西时,它会与“合格名称”混淆。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多