XML 命名空间规范解释了无前缀属性的解释由它们出现的元素决定。并且无前缀属性名称的名称空间名称始终没有值。
jid
在以下情况下,此规则如何应用于属性的命名空间。
<query xmlns="jabber:iq:roster">
<item jid="romeo@example.com"></item>
</query>
如果命名空间的声明和所讨论的属性都没有前缀,则该属性jid
在命名空间中jabber:iq:roster
。
<q:query xmlns:q="jabber:iq:roster">
<q:item q:jid="romeo@example.com"></q:item>
</q:query>
如果命名空间和属性的声明都具有相同的前缀,则属性jid
也具有命名空间jabber:iq:roster
:
<q:query xmlns:q="jabber:iq:roster">
<q:item jid="romeo@example.com"></q:item>
</q:query>
但是,如果命名空间是用前缀声明的,但属性没有前缀,那么属性在哪个命名空间中呢?我会假设,该属性jid
在父元素中声明了默认命名空间,
<parent xmlns="http://example.com"> <q:query xmlns:q="jabber:iq:roster"> <q:item jid="romeo@example.com"></q:item> </q:query> </parent>
- 或者没有命名空间,如果没有这样的声明。
我做对了吗?