I'm trying to understand the implications of elementFormDefault="qualified/unqualified"
in an XML schema which is embedded in WSDL (SOAP 1.1, WSDL 1).
For example I have this schema inside a WSDL:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://www.example.com/library">
<xsd:element name="person">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
In plain XML this is obviously invalid because "name" has no specified namespace:
<lib:person xmlns:lib="http://www.example.com/library">
<name>XML Schema</name>
</lib:person>
while this is obviously valid because all elements are qualified:
<lib:person xmlns:lib="http://www.example.com/library">
<lib:name>qualified xml</lib:name>
</lib:person>
But surprisingly libxml says that the following is also valid:
<person xmlns="http://www.example.com/library">
<name>XML Schema</name>
</person>
Question 1: I assumed that qualified
meant <person>
should look something like <lib:person xmlns:lib="...">
. But the results seem to indicate that the xmlns
attribute does the same?
Now assume that the above XML is part of a SOAP request, e.g.
...
<s:Body>
<person xmlns="http://www.example.com/library">
<name>XML Schema</name>
</person>
</s:Body>
...
Question 2: Is the request above valid if the WSDL contains a qualified
schema as displayed above? (plain SOAP, disregarding WS-I basic profile)
Question 3 When I consider WS-I Basic profile (especially 4.1.13 SOAP Body and Namespaces) is the above request still valid? (is person
considered "namespace qualified"?)