#24 [xhtml]

Restricting Complex Types - Example #1

In restrictions, you repeat the content model with the restrictions in place. Here we have several optional parts:

<xs:complexType name="Product">
   <xs:sequence>
      <xs:element name="number" type="xs:string"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="size" type="my:Size" minOccurs="0"/>
      <xs:element name="color" type="my:Colors" minOccurs="0"/>
   </xs:sequence>
</xs:complexType>

Then we can restrict content to be products with a size element:

<!-- Forced to have a size -->
<xs:complexType name="ProductWithSize">
   <xs:complexContent>
   <xs:restriction base="my:Product">
   <xs:sequence>
      <xs:element name="number" type="xs:string"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="size" type="my:Size"/>
      <xs:element name="color" type="my:Colors" minOccurs="0"/>
   </xs:sequence>
   </xs:restriction>
   </xs:complexContent>
</xs:complexType>