Contenu mixte XSD
Un élément de type complexe mixte peut contenir des attributs, des éléments et du texte.
Types complexes avec contenu mixte
Un élément XML, "letter", qui contient à la fois du texte et d'autres éléments :
<letter>
Dear Mr. <name>John Smith</name>.
Your order <orderid>1032</orderid>
will be shipped on <shipdate>2001-07-13</shipdate>.
</letter>
Le schéma suivant déclare l'élément "lettre" :
<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 permettre aux données de caractères d'apparaître entre les éléments enfants de "letter", l'attribut mixte doit être défini sur "true". La balise <xs:sequence> signifie que les éléments définis (name, orderid et shipdate) doivent apparaître dans cet ordre à l'intérieur d'un élément "letter".
On pourrait aussi donner un nom à l'élément complexType, et laisser l'élément "letter" avoir un attribut type qui fait référence au nom du complexType (si vous utilisez cette méthode, plusieurs éléments peuvent faire référence au 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>