Sergej Andrejev
Sergej Andrejev

Reputation: 9403

Is xmlns="" a valid xml namespace?

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>

Upvotes: 28

Views: 19450

Answers (2)

Ludovic Kuty
Ludovic Kuty

Reputation: 4954

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. The 1.1 NS rec added a way to also undeclare a NS declaration with a prefix.

Thus it is a valid value for the xmlns special attribute, but it is not "a valid XML namespace" like the OP wrote it.

Upvotes: 5

Frerich Raabe
Frerich Raabe

Reputation: 94319

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.

Upvotes: 29

Related Questions