XSD Contenu mixte
Les types complexes mixtes peuvent contenir des attributs, des éléments et du texte.
Types complexes avec contenu mixte
L'élément XML "letter" contient du texte ainsi que d'autres éléments :
<letter>
Cher M.<name>John Smith</name>.
Votre commande <orderid>1032</orderid>
sera expédiée le <shipdate>2001-07-13</shipdate>.
</letter>
Cher M.<name>John Smith</name>.
Votre commande <orderid>1032</orderid>
sera expédiée le <shipdate>2001-07-13</shipdate>.
</letter>
Le schéma suivant déclare cet élément "letter" :
<xs:element name="letter">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs:element name="shipdate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs:element name="shipdate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:element>
Remarque :Pour que des données de caractères apparaissent entre les éléments enfants de « letter », l'attribut mixed doit être défini sur « true ». La balise <xs:sequence> (name, orderid et shipdate) signifie que les éléments définis doivent apparaître dans l'ordre à l'intérieur de l'élément « letter ».
Nous pouvons également donner un nom à l'élément complexType, et laisser l'attribut type de l'élément « letter » faire référence à ce nom du complexType (de cette façon, plusieurs éléments peuvent référencer le même type complexe) :
<xs:element name="letter" type="lettertype"/>
<xs:complexType name="lettertype" mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs:element name="shipdate" type="xs:date"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="lettertype" mixed="true">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="orderid" type="xs:positiveInteger"/>
<xs:element name="shipdate" type="xs:date"/>
</xs:sequence>
</xs:complexType>