Понимание elementFormDefault квалифицировано / неквалифицировано при проверке xml по WSDL (схема xsd)
Я пытаюсь понять последствияelementFormDefault="qualified/unqualified"
в XML-схеме, встроенной в WSDL (SOAP 1.1, WSDL 1).
Например, у меня есть эта схема внутри 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>
В простом XML это явно недопустимо, потому что у «name» нет указанного пространства имен:
<lib:person xmlns:lib="http://www.example.com/library">
<name>XML Schema</name>
</lib:person>
в то время как это очевидно верно, потому что все элементы квалифицированы:
<lib:person xmlns:lib="http://www.example.com/library">
<lib:name>qualified xml</lib:name>
</lib:person>
Но на удивление libxml говорит, что следующее также верно:
<person xmlns="http://www.example.com/library">
<name>XML Schema</name>
</person>
Вопрос 1: Я предположил, чтоqualified
имел ввиду<person>
должен выглядеть примерно так<lib:person xmlns:lib="...">
, Но результаты показывают, чтоxmlns
атрибут делает то же самое?
Теперь предположим, что приведенный выше XML является частью запроса SOAP, например,
...
<s:Body>
<person xmlns="http://www.example.com/library">
<name>XML Schema</name>
</person>
</s:Body>
...
вопрос 2: Действительно ли запрос выше действителен, если WSDL содержитqualified
схема как показано выше? (простой SOAP, без учета основного профиля WS-I)
Вопрос 3 Когда я рассматриваю профиль WS-I Basic (особенно4.1.13 Тело SOAP и пространства имен) вышеуказанный запрос еще действителен? (являетсяperson
считается "пространство имен уточнено"?)