XML名称空间和不确定的属性

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

  1. 具有在父元素中声明的默认名称空间,

     <parent xmlns="http://example.com"> <q:query xmlns:q="jabber:iq:roster"> <q:item jid="romeo@example.com"></q:item> </q:query> </parent> 
  2. 或者没有名字空间,如果没有这样的声明的话。

我得到这个权利?

没有前缀的属性总是在空的名字空间中,即它没有名字空间。 封闭元素是否具有名称空间并不重要。 这是我读到你所引用的第二个陈述,那就是我所用的所有XML工具的解释。

XPath和其他规范使用的正常解释是没有前缀的属性不在名称空间中。

有语言律师坚持说名称空间规范不会这么说。 它说,一个没有前缀的属性在词汇的devise者所说的任何名称空间中。但是这种解释在实践中并不是很有用, 这是重要的工具。