2016-02-20 116 views
0

xml文檔中每個XML元素的屬性名稱應該是唯一的,不是嗎?Xml屬性唯一性

<tag is_such_attr_is_valid="value1" is_such_attr_is_valid="value2"> </tag> 

p.s.我感興趣的不是如何在驗證模式(DTD,XSD)中添加此約束。但是我很感興趣的是,如果嚴格說話,它會導致格式良好的xml文檔本身。

+0

裏面一個標籤可以有每名只有一個屬性。 – jdweng

+2

[如何多次將相同屬性添加到XML中的元素標記]的可能重複(http://stackoverflow.com/questions/12664154/how-to-add-the-same-attribute-multiple-times-to -an-element-tag-in-xml) – Quentin

+0

爲什麼「在標籤內部,每個名稱只能有一個屬性。」 ?你能給我證明鏈接嗎? – bruziuz

回答

3

是的。在一個元素中不能有兩個具有相同expanded name的XML屬性(請參見參考:1,2)。所以你發佈的XML樣本顯然是不允許的。

即使兩個屬性被賦予不同的前綴,只要前綴綁定到相同的uri,它仍然是不允許的。對比靠在<good>一個在下面的例子中的<bad>元件(改編自上述鏈接的參考,並擴大到show good alternatives):

<!-- http://www.w3.org is bound to foo and bar --> 
<x xmlns:foo="http://www.w3.org" 
    xmlns:bar="http://www.w3.org" > 
    <bad a="1"  a="2" /> 
    <bad foo:a="1" bar:a="2" /> 
    <good a="1 2"/> 
    <good> 
    <a>1</a> 
    <a>2</a> 
    </good> 
    <good a="1" b="2" /> 
</x> 
+2

正確,完整,簡潔。可能是屬性名稱唯一性問題的標準答案! – kjhughes