XML命名空间和无前缀属性XML命名空间和无前缀属性(XML Namespaces and Unpr

2019-05-14 08:58发布

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. 或者没有命名空间,如果没有这样的声明。

我得到这个权利?

Answer 1:

不带前缀的属性始终是空的命名空间,也就是说,它没有名字空间。 这是不要紧的封闭元素是否有名称空间或没有。 这是我的,你指的是第二条语句的阅读,这是我用过的所有XML工具的解释。



Answer 2:

通过XPath和其他规范使用正常的解释是,没有前缀的属性是没有命名空间。

有语言专家谁将会坚持该命名空间规范不说。 它说,没有前缀的属性是什么名称空间的词汇的设计师说,这是在但这种解释并不十分有用的做法。 这是什么工具做的事情。



文章来源: XML Namespaces and Unprefixed Attributes