XML Namespaces and Unprefixed Attributes

匆匆过客 提交于 2019-11-26 04:56:16

问题


The specification of XML Namespaces explains that the interpretation of unprefixed attributes is determined by the element on which they appear. And that the namespace name for an unprefixed attribute name always has no value.

How does this rule apply to the namespace of the attribute jid in the following cases.

<query xmlns=\"jabber:iq:roster\">
  <item jid=\"romeo@example.com\"></item>
</query>

If the declaration of the namespace and the attribute in question both don\'t have an prefix, the attribute jid is in the namespace jabber:iq:roster.

<q:query xmlns:q=\"jabber:iq:roster\">
  <q:item q:jid=\"romeo@example.com\"></q:item>
</q:query>

If both, the declaration of the namespace and the attribute have the same prefix, the attribute jidalso has the namespace jabber:iq:roster:

<q:query xmlns:q=\"jabber:iq:roster\">
  <q:item jid=\"romeo@example.com\"></q:item>
</q:query>

But in which namespace is the attribute if the namespace is declared with an prefix but the attribute doesn\'t have a prefix? I would assume, that the attribute jid

  1. has the default namespace declared in a parent element,

    <parent xmlns=\"http://example.com\">
      <q:query xmlns:q=\"jabber:iq:roster\">
        <q:item jid=\"romeo@example.com\"></q:item>
      </q:query>
    </parent>
    
  2. or no namespace, if there isn\'t such a declaration.

Do I get this right?


回答1:


An attribute without prefix is always in the empty name space, i.e. it has no name space. It is doesn't matter whether the enclosing element has a name space or not. That's my reading of the second statement you refer to, and that is the interpretation of all the XML tools I've used.




回答2:


The normal interpretation used by XPath and other specs is that an unprefixed attribute is in no namespace.

There are language lawyers who will insist that the namespaces spec doesn't say that. It says that an unprefixed attribute is in whatever namespace the designer of the vocabulary says it is in. But this interpretation isn't very useful in practice; it's what the tools do that matters.



来源:https://stackoverflow.com/questions/10672635/xml-namespaces-and-unprefixed-attributes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!