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

我正在努力了解 “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阅读这个。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇