Extension de types complexes


Construction d'un nouveau type complexe en ajoutant des composants à un type complexe existant

Analogue à l'extension de type simple (voir internationalPrice)

Exemple de dérivation d'un type complexe à partir d'un autre type complexe :

 <complexType name="Address">
  <sequence>
   <element name="name"   type="string"/>
   <element name="street" type="string"/>
   <element name="city"   type="string"/>
  </sequence>
 </complexType>

 <complexType name="UKAddress">
  <complexContent>
   <extension base="ipo:Address">
    <sequence>
     <element name="postcode"
              type="ipo:UKPostcode"/>
    </sequence>
    <attribute name="exportCode"
               type="positiveInteger"
               fixed="1"/>
   </extension>
  </complexContent>
 </complexType>

Équivalent à :

 <complexType name="UKAddress">
  <sequence>
   <element name="name"   type="string"/>
   <element name="street" type="string"/>
   <element name="city"   type="string"/>
   <element name="postcode" type="ipo:UKPostcode"/>
  </sequence> 
  <attribute name="exportCode"
             type="positiveInteger" fixed="1"/>
 </complexType>