Types composés XSD avec contenu mixte

Un type composite mixte peut contenir des attributs, des éléments et du texte.

Type composite à contenu mixte

L'élément XML, "letter", contient du texte et d'autres éléments :

<letter>
Cher Monsieur <name>John Smith</name>.
Votre commande <orderid>1032</orderid>
sera expédié 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>

Remarque :Pour que les données de caractères puissent apparaître entre les sous-éléments de "letter", l'attribut mixed doit être réglé sur "true". L'étiquette <xs:sequence> (name, orderid et shipdate) signifie que les éléments définis doivent apparaître successivement à l'intérieur de l'élément "letter".

Nous pouvons également donner un nom à l'élément complexType et faire que l'attribut type de l'élément "letter" référence ce nom de complexType (de cette manière, plusieurs éléments peuvent référencer le même type composite) :

<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>