In restrictions, you repeat the content model with the restrictions in place:
<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="1"/> <xs:element name="color" type="my:Colors" minOccurs="0"/> </xs:sequence> </xs:complexType> <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> <xs:complexType name="MinimalProduct"> <xs:complexContent> <xs:restriction base="my:Product"> <xs:sequence> <xs:element name="number" type="xs:string"/> <xs:element name="name" type="xs:string"/> </xs:sequence> </xs:restriction> </xs:complexContent/> </xs:complexType>