1

我已经制作了一个带有几个不同选项的 XML 生成器,其中一个是样式选项,它定义是对原始数据类型使用属性还是元素。

目前不支持 XML 模式,但我需要允许设置 XML 命名空间,并且我一直在做一些研究。我的理解是 XML 命名空间可以有前缀,但不是必须的。它还需要一个唯一的字符串属性值,该值通常是 URI,但并非必须如此。

我有点困惑,因为我是 XML 命名空间的新手,如果我们看一下示例 xml 文档,我对此有一些疑问

<?xml version="1.0"?>
<root xmlns="some_identifier">
<oneKey>value</oneKey>
</root>

这是使用键值示例的元素样式,我将允许配置“some_identifier”。在这个例子中是 XML 命名空间下的“oneKey”元素吗?还是我必须指定一个前缀xmlns:ns,然后在“oneKey”前面加上“ns”?

另外,如果我们看一下属性样式:

<?xml version="1.0"?>
<root xmlns="some_identifier" oneKey="value" />

在这个例子中,我们是否需要在 oneKey 中定义类似的前缀?

如果我在这些问题上偏离了标准,我深表歉意,如果我没有意义,请告诉我,

更新:

我找到了这个网站:http ://www.rpbourret.com/xml/NamespacesFAQ.htm#exec_1

也就是说这两个是相同的:

<foo:A xmlns:foo="http://www.foo.org/">
     <foo:B>abcd</foo:B>
</foo:A>

<A xmlns="http://www.foo.org/">
     <B>abcd</B>
</A>

这非常有用,但关于属性样式。我需要为属性添加前缀吗?或者 xmlns 默认也适用于这些?

4

1 回答 1

2
<root xmlns="some_identifier">

这声明了默认命名空间,root 及其所有子项都属于它,您不需要前缀。

<root xmlns="some_identifier" oneKey="value" />

默认命名空间不适用于属性。如果你想让 oneKey 属于一个命名空间,你必须创建一个前缀并在属性上使用它

<root xmlns="some_identifier" xmlns:myns="some_identifier" myns:oneKey="value"/>
于 2012-06-06T15:46:35.763 回答