2017-01-21 32 views
1

是否有兩次使用相同名稱空間前綴的XML文檔?您是否可以在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> 

回答

2

是的,前綴本身沒有特別的含義 - 只作爲命名空間的別名。

完全有效的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> 

它也適用於空,可以爲每個節點被改變過(默認)前綴。以下是用自己的namespce甚至沒有命名的每個節點有效的XML有前綴:

<r xmlns="urn:one"> 
    <p xmlns="urn:two"> 
     <c xmlns="urn:three"> 
     </c> 
    </p> 
</r> 

注意,在XPath選擇前綴不以任何給定的XML文檔中的前綴相關,並且必須有前綴的單獨的映射命名空間。在XPath前綴中也必須具有唯一的映射(沒有標準,映射針對每個Xml DOM實現)。

例如,對於本文中的第一個XML,因爲每個前綴必須映射到不同的名稱空間,所以不能讓XPath看起來類似於XML,如「/ a:r/a:p/a:c」。 Xpath看起來像「/ p1:r/p2:p/p3:c」,映射前綴{p1-> urn:one,p2-> urn:two,p3-> urn:three}。

相關問題