加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML不合格的属性名称的默认命名空间?

发布时间:2020-12-16 08:04:47 所属栏目:百科 来源:网络整理
导读:我正在努力了解 “Namespaces in XML 1.0 (Third Edition)”定义对不合格属性命名空间的正确解释。 “The namespace name for an unprefixed attribute name always has no value.” 后来在同一节: “The attribute value in a default namespace declarati
我正在努力了解 “Namespaces in XML 1.0 (Third Edition)”定义对不合格属性命名空间的正确解释。

“The namespace name for an unprefixed attribute name always has no value.”

后来在同一节:

“The attribute value in a default namespace declaration MAY be empty. This has the same effect,within the scope of the declaration,of there being no default namespace.”

那么如果我想为一个元素(及其子代)声明一个默认的命名空间,那么我还必须为这个命名空间中的任何属性声明一个前缀 – 命名空间映射?

例如,在这个例子中

<parent xmlns="http://example.com/foo">
    <child attrib="value">text</child>
<parent>

我会解释上面的定义,说attrib的命名空间是空的。

所以如果我需要属性与父母有相同的命名空间,那么我将被迫这样做?

<foo:parent xmlns:foo="http://example.com/foo">
    <foo:child foo:attrib="value">text</foo:child>
<foo:parent>

或这个?

<parent xmlns="http://example.com/foo" xmlns:foo="http://example.com/foo">
    <child foo:attrib="value">text</child>
<parent>

这似乎对我来说很愚蠢,因为它似乎打败了默认命名空间的目的。我希望我只是误解了规范。

你是正确的。属性不属于默认命名空间的想法是它们被认为存在于“元素命名空间”中 – 因此在这种情况下,< foo:child />被认为是@attrib的’命名空间’。请注意,这只是概念性的;没有API或任何以这种方式引用属性命名空间的东西。

这被选择是因为多个元素可能具有相同名称的属性,但具有不同的含义 – 与传统的命名空间不同,它是一组名称(因此没有重复项)。在某种程度上,它为命名空间提供了更多的结构,而不是具有一个平面集合。

你可以在a very old version of the Namespaces recommendation阅读这个。

此约定意味着每当您看到一个前缀属性时,它表示一些与文档中的主模式无关的“附加”信息。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读