2016-08-04 87 views
1

有官方測試用例XML規範,可以在這裏找到:Test cases for Canonical XML 2.0XML規範化的字典序

其中之一是這樣的:

<!DOCTYPE doc [<!ATTLIST e9 attr CDATA "default">]> 
<doc> 
    <e1 /> 
    <e2 ></e2> 
    <e3 name = "elem3" id="elem3" /> 
    <e4 name="elem4" id="elem4" ></e4> 
    <e5 a:attr="out" b:attr="sorted" attr2="all" attr="I'm" 
     xmlns:b="http://www.ietf.org" 
     xmlns:a="http://www.w3.org" 
     xmlns="http://example.org"/> 
    <e6 xmlns="" xmlns:a="http://www.w3.org"> 
     <e7 xmlns="http://www.ietf.org"> 
     <e8 xmlns="" xmlns:a="http://www.w3.org"> 
      <e9 xmlns="" xmlns:a="http://www.ietf.org"/> 
     </e8> 
     </e7> 
    </e6> 
</doc> 

給出的規範化形式是

<doc> 
    <e1></e1> 
    <e2></e2> 
    <e3 id="elem3" name="elem3"></e3> 
    <e4 id="elem4" name="elem4"></e4> 
    <e5 xmlns="http://example.org" xmlns:a="http://www.w3.org" xmlns:b="http://www.ietf.org" attr="I'm" attr2="all" b:attr="sorted" a:attr="out"></e5> 
    <e6> 
     <e7 xmlns="http://www.ietf.org"> 
     <e8 xmlns=""> 
      <e9 attr="default"></e9> 
     </e8> 
     </e7> 
    </e6> 
</doc> 

我想知道爲什麼b:attr="sorted"之前a:attr="out"排序輸出...我真的很感謝,如果有人可以clar如果這對我來說。

回答

0

不要看名稱空間前綴;看看命名空間的URI。

雖然a自帶b之前,iw前:

xmlns:b="http://www.ietf.org" 
    xmlns:a="http://www.w3.org" 

因此b:attr="sorted"a:attr="out"標準地之前。

這在section 2.3解釋說:

注意:在e5b:attra:attr因爲主鍵是命名空間URI不是命名空間前綴