Is xmlns=“” a valid xml namespace?

99封情书 提交于 2019-12-18 05:28:22

问题


Is "empty" a valid value for XML namespace? If yes what does it mean?

I have the following XML code but I'm not sure to which namespace Field1 and Field2 elements belong to.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Header />
  <soap:Body>
    <Root xmlns="uri">
      <Field1 xmlns="">147079737</Field1>
      <Field2 xmlns="">POL</Field2>
    </Root>
  </soap:Body>
</soapenv:Envelope>

回答1:


Yes, it is valid. Section 6.2 in the Namespaces in XML 1.0 Recommendation specifically says:

The attribute value in a default namespace declaration MAY be empty. This has the same effect, within the scope of the declaration, of there being no default namespace.

Quoted from comment:

It is legal, and this is the way to bring an element into the global namespace.




回答2:


It is not a valid XML NS. It is not a valid XML NS declaration. Please check section 2.2 of Namespaces in XML 1.0 :

The empty string, though it is a legal URI reference, cannot be used as a namespace name.

It is however the only way to undeclare a default NS declaration if there is one in effect, or it has no effect. See. Namespaces in XML 1.0 and 1.1, section 6.2. However the 1.1 NS rec added a way to also undeclare a NS declaration with a prefix.

Thus it is valid, but it is not "a valid XML namespace" like the OP wrote it.



来源:https://stackoverflow.com/questions/1587891/is-xmlns-a-valid-xml-namespace

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