У меня есть XML, который включает элемент с атрибутом: xsi: type = "AnswerBool". Мой xsd имеет этот элемент и настроил атрибут с именем = "тип", а затем ограничивает значения перечисления до "AnswerBool" (и других). Однако, когда я пытаюсь проверить XML, это терпит неудачу. Если я изменю XML, чтобы элемент использовал тип, а не xsi: type, все в порядке.
XML:
<Answer xsi:type="AnswerBool">
-1
XSD:
<xs:element name="Answer" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Value">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="xsd:int"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="type" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="AnswerBool"/>
<xs:enumeration value="AnswerMsc2DTO"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
Я пытался назвать атрибут «type» как «xsi: type», но мне не разрешено иметь «:» в имени. К сожалению, я не могу обновить XML, чтобы НЕ использовать «xsi:» перед «type». Я знаю, что я в основном работаю над тем, чтобы разрешить несколько разных типов для моего элемента «Ответ». Так что я, возможно, зашла слишком далеко, чтобы заставить все это работать. Однако ...
У кого-нибудь есть идеи относительно того, как я могу проверить свой XML?
Я имею в виду, есть ли способ включить "xsi:" в имя моего атрибута или, возможно, есть способ заставить процесс проверки только смотреть на часть "type" и игнорировать "xsi:"?