配置XML命名空间

时间:2012-06-06 15:32:25

标签: xml-namespaces

我创建了一个带有几个不同选项的XML生成器,一个是样式选项,它定义是否对原始数据类型使用属性或元素。

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

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

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

这是使用键值示例的元素样式,我将允许配置&#34; some_identifier&#34;。在这个例子中是&#34; oneKey&#34; XML命名空间下的元素?或者我必须指定一个类似xmlns:ns的前缀,然后加上前缀&#34; oneKey&#34;与&#34; ns&#34;?

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

<?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默认是否适用于这些?

1 个答案:

答案 0 :(得分:2)

<root xmlns="some_identifier">

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

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

默认名称空间不适用于属性。如果您希望oneKey属于命名空间,则必须创建前缀并在属性

上使用它
<root xmlns="some_identifier" xmlns:myns="some_identifier" myns:oneKey="value"/>