可以在XML文档中重用相同的命名空间吗

可以在XML文档中重用相同的命名空间吗,xml,xml-parsing,Xml,Xml Parsing,两次使用相同名称空间前缀的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:Declaratio

两次使用相同名称空间前缀的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>

你好,世界

是的,前缀本身没有特殊含义-只是作为名称空间的别名

完全有效的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中,前缀必须具有唯一的映射(没有针对它的标准,映射对于每个XMLDOM实现都是特定的)

例如,对于本文中的第一个XML,您不能使用类似于XML的XPath,例如“/a:r/a:p/a:c”,因为每个前缀必须映射到不同的命名空间。Xpath看起来像“/p1:r/p2:p/p3:c”,前缀映射为{p1->urn:one,p2->urn:two,p3->urn:three}