У меня есть следующий XSD:
<xs:complexType name="typeBroken">
<xs:choice>
<xs:element name="B">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="FOO|BAR" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:sequence>
<xs:element name="A">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="B">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="3" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:choice>
</xs:complexType>
Итак, я хотел бы, чтобы присутствие «А» сделало «В» другим подтверждением. Это возможно? Например:
<test><B>FOO</B></test>
<test><A>HELLO</A><B>BAZ</B><test>
Должны оба подтвердить. В то время как:
<test><B>BAZ</B></test>
НЕ ДОЛЖЕН проверяться. Тем не менее, я получаю от xsd:
cos-element-consistent: Error for type 'typeBroken'. Multiple elements with name 'B', with different types, appear in the model group.