"filter"블록을 포함하지 않는 XML 블록이 3 개 있거나 "invalidation"이있는 "filter"가 있으며 첫 번째 값은 "fixed1"또는 "fixed2"입니다. "fixed1"경우 : 다른 아무것도, "fixed2"이 순서 A1, A2, A3 경우 (아래 참조)XSD : 첫 번째 값에 따라이 XML의 유효성을 검사하는 방법
<filter>
<invalidation>fixed1</invalidation>
</filter>
<filter>
<invalidation>fixed2</invalidation>
<A1>string...</A1>
<A2>string...</A2>
<A2>string...</A3>
</filter>
방법이 유효성을 검사? xs : choice를 사용하는 몇 가지 해결책이 있다고 생각하지만 찾지 못했습니다.
내가 찾은 유일한 (가난한) 솔루션입니다 :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
<xs:simpleType name="invalidation">
<xs:restriction base="xs:string">
<xs:pattern value="fixed1|fixed2"/>
</xs:restriction>
</xs:simpleType>
...
<xs:element name="filter" minOccurs="0">
<xs:complexType>
<xs:all>
<xs:element name="invalidation" type="invalidation"/>
<xs:element name="A1" type="xs:string" minOccurs="0"/>
<xs:element name="A2" type="xs:string" minOccurs="0"/>
<xs:element name="A3" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
' '로 시도하십시오. http://stackoverflow.com/questions/24774554/xsd-1-1-xsalternative-xsassert –
@ Jérôme, xs : alternative는 유형은 속성 값을 기반으로하므로 첫 번째 요소의 값을 기반으로 할 수 없습니다. –