Is xmlns=“” a valid xml namespace?

2019-01-26 03:34发布

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>

2条回答
Deceive 欺骗
2楼-- · 2019-01-26 04:00

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.

查看更多
淡お忘
3楼-- · 2019-01-26 04:07

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.

查看更多
登录 后发表回答