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</Fi开发者_运维问答eld1>
<Field2 xmlns="">POL</Field2>
</Root>
</soap:Body>
</soapenv:Envelope>
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.
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.
精彩评论