파생으로 얻을 수 있습니다. 당신은 유형이 가정 포함 Order
foo
옵션 및 bar
: 당신이 serviceB
은 선택 foo
및 bar
허용하는 경우
<xs:element name="services">
<xs:complexType>
<xs:choice>
<xs:element name="serviceA" type="ServiceAType" />
<xs:element name="serviceB" type="ServiceBType" />
</xs:choice>
</xs:complexType>
</xs:element>
:
<xs:complexType name="Order">
<xs:sequence>
<xs:element ref="foo" minOccurs="0"/>
<xs:element ref="bar" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
난 당신이 다른 서비스를 지원하는 루트 요소가 있으리라 믿고있어 serviceB
유형을 Order
으로 간단하게 선언하거나 을 생성하여 Order
:
를 포함
이제
<xs:complexType name="ServiceAType">
<xs:complexContent>
<xs:restriction base="Order">
<xs:sequence>
<xs:element ref="foo" minOccurs="1"/>
<xs:element ref="bar" minOccurs="0"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
더 요소를 포함하지 않는 <serviceB>
을 가질 수 : 3,516,
<xs:complexType name="ServiceBType">
<xs:complexContent>
<xs:extension base="Order"/>
</xs:complexContent>
</xs:complexType>
당신이 foo
이 필요하다는 것을, 당신은 주문의 제한으로 구현할 수 있도록 Order
의 내용을 제한 할 ServiceAType
를 원하는 경우 <bar>
또는 <foo>
다음에 <bar>
이옵니다. <serviceA>
은 <foo>
, 그 다음은 <bar>
또는 <foo>
이지만 다른 것은 허용하지 않습니다.