XML規範指出,非限定名稱空間不在命名空間中。規範中的語義是有爭議的,但是所有的XML工具集都是以這種方式編寫的。請參閱:XML屬性命名衝突解決方案
XML Namespaces and Unprefixed Attributes
這是我的潛意識恨了,我的大腦有意識的鬥爭,以闡述理由的概念。
如果非限定屬性不在任何名稱空間中,那麼驗證如何仍然有效?這是一個矛盾。
當範圍內有兩個同名的屬性會發生什麼。一個來自默認名稱空間,另一個來自當前元素。
<document xmlns="default.ns" xmlns:hr="humanresources.ns">
<hr:user id="abc" />
</document>
如果id
在兩個default.ns和humanresources.ns但不同的數據類型定義,說xs:token
和xs:integer
其命名空間將被id
,如果有一個決心進行驗證?
假設一個驗證器會在模糊性方面出錯,並強制其他屬性被限定,那麼我是否必須編寫一個幫助器GetLocalAttribute方法來處理所有這些?
像:
ids
=選擇元素上的所有屬性,其中的localName等於id
b
=從ids
其中的名稱空間等於元素名稱空間選擇單個- 如果
b
= NULL {返回b
} - 否則從
ids
返回單個名稱空間等於空
盧克
Pedantry警報:您並不是唯一不喜歡指定XML名稱空間的方式,但您的表徵是錯誤的。 XML規範完全沒有提及名稱空間。 XML命名空間規範指出,非限定名稱不會被符合命名空間的軟件認爲屬於任何命名空間 - 它不*表示它們「不在命名空間中」。而且,XML堆棧中的大多數工具都將不合格的名稱視爲與所有其他名稱空間不同的名稱空間。 – 2014-08-28 18:26:39