3
XML名稱空間的規範說明了the interpretation of unprefixed attributes is determined by the element on which they appear。而那namespace name for an unprefixed attribute name always has no value。XML名稱空間和未定義的屬性
在下列情況下,此規則如何應用於屬性jid
的命名空間。
<query xmlns="jabber:iq:roster">
<item jid="[email protected]"></item>
</query>
如果命名空間的聲明和相關的屬性都沒有一個前綴,屬性jid
是在命名空間jabber:iq:roster
。
<q:query xmlns:q="jabber:iq:roster">
<q:item q:jid="[email protected]"></q:item>
</q:query>
如果同時,該命名空間的聲明和屬性的前綴相同,屬性jid
也有命名空間jabber:iq:roster
:
<q:query xmlns:q="jabber:iq:roster">
<q:item jid="[email protected]"></q:item>
</q:query>
但在命名空間屬性如果命名空間用前綴聲明,但屬性沒有前綴?我會假設,該屬性jid
在父元素中聲明的默認命名空間,
<parent xmlns="http://example.com"> <q:query xmlns:q="jabber:iq:roster"> <q:item jid="[email protected]"></q:item> </q:query> </parent>
- 或沒有命名空間,如果沒有這樣的聲明。
我是否明白這一點?
但是,如果一個沒有前綴的屬性沒有名稱空間,我怎麼知道,屬性'jid'形成第一個和第三個示例是模式屬性'jid' ['jabber:iq:roster'](http:// xmpp.org/rfcs/rfc6121.html#schema)?順便說一句,我知道這是一個理論上的討論。 ;-) –
你通過研究模式來獲得知識。有兩種可能性。 1)模式將其定義爲元素或類型聲明的本地屬性,或者2)模式允許此時的任何屬性。 –
現在我明白了。 [德語維基百科中的解釋](http://de.wikipedia.org/wiki/Namensraum_(XML)#Attribute)也對我有所幫助。在上面的所有3個例子中,屬性'jid'是名冊項目的預期屬性。只有當屬性的名稱空間不爲null並且與它出現的元素的名稱空間不同時,它纔是不同的(例如' ')。 –