使用两次使用相同名称空间前缀的XML文档是否有效?
在以下文档中,s
前缀使用了两次,但在嵌套元素中URI
是不同的。
有效吗?
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Declarations>
<s:MyObject xmlns:s="library://ns.mysite.com">
<s:Paragraph>hello world</s:Paragraph>
</s:MyObject>
</fx:Declarations>
</s:Application>
答案 0 :(得分:3)
是的,前缀本身没有特定含义 - 仅作为命名空间的别名。
完全有效的XML,每个节点名称都具有唯一的命名空间,即使所有节点都具有相同的前缀:
<a:r xmlns:a="urn:one">
<a:p xmlns:a="urn:two">
<a:c xmlns:a="urn:three">
</a:c>
</a:p>
</a:r>
它也适用于空(默认)前缀,也可以为每个节点更改。以下是有效的XML,每个节点都以自己的名称命名,甚至没有前缀:
<r xmlns="urn:one">
<p xmlns="urn:two">
<c xmlns="urn:three">
</c>
</p>
</r>
请注意,XPath选择器中的前缀与任何给定XML文档中的前缀无关,并且必须具有前缀到命名空间的单独映射。同样在XPath中,前缀必须具有唯一的映射(没有标准,并且映射特定于每个Xml DOM实现)。
例如,对于这篇文章中的第一个XML,您不能拥有类似于XML的XPath,例如&#34; / a:r / a:p / a:c&#34;因为每个前缀必须映射到不同的名称空间Xpath看起来像&#34; / p1:r / p2:p / p3:c&#34;映射前缀{p1-> urn:one,p2-&gt; urn:two,p3-&gt; urn:three}。