У меня есть следующий XML:
<ns1:verifySignedDocumentResponse xmlns:ns1="http://signing.ws.comarch.gov">
<verifySignedDocumentReturn xmlns:ns2="http://exception.ws.comarch.gov">Some string content...</verifySignedDocumentReturn>
</ns1:verifySignedDocumentResponse>
В случае verifySignedDocumentReturn
мне интересно, правильно ли определять префикс (xmlns:ns2=...
), но не дляквалифицировать (ns2:verifySignedDocumentReturn
) соответствующий элемент с этим префиксом?
w3schools.com приводит примеры , которые показывают:
- Если элемент имеет префикс, пространство имен дляпрефикс должен быть определен.
- Элемент не должен иметь префикс, если используется пространство имен по умолчанию.
Но в моем примере нет пространства имен по умолчанию.Итак, я ожидаю, что verifySignedDocumentReturn
будет иметь префикс ns2
.
Я получил этот XML-фрагмент из реального сервиса, поэтому я задаюсь вопросом: это правильно и правильно?Или просто невнимательность создателей сервиса?Я спрашиваю, потому что я новичок в XML / XSD.
Я пытался сгенерировать XSD из этого XML с различными онлайн-генераторами, но ни одна сгенерированная схема не выглядит разумной.
Вариант 1(вообще не учитывает ns2
пространство имен):
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
targetNamespace="http://signing.ws.comarch.gov"
xmlns:ns1="http://signing.ws.comarch.gov">
<xs:element name="verifySignedDocumentResponse">
<xs:complexType>
<xs:sequence>
<xs:element name="verifySignedDocumentReturn" form="unqualified"
type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Вариант 2:
schema0.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ns1="http://signing.ws.comarch.gov"
xmlns:ns2="http://exception.ws.comarch.gov"
attributeFormDefault="unqualified"
elementFormDefault="qualified"
targetNamespace="http://signing.ws.comarch.gov"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import schemaLocation="schema1.xsd" />
<xs:element name="verifySignedDocumentResponse">
<xs:complexType>
<xs:sequence>
<xs:element ref="verifySignedDocumentReturn" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
schema1.xsd:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="verifySignedDocumentReturn" type="xs:string" />
</xs:schema>