Définition du type complexe
Le modèle de contenu des éléments XML complexes, est spécifié par l'élément complexType qui peut contenir :
Des déclarations d'éléments XML fils par :
Déclaration directe : spécification de l'élément XML
Déclaration par référence : faire référence à une spécification d'élément XML déjà défini (attribut ref).
Des déclarations d'attributs par l'élément attribute.
Syntaxe :
<xsd:complexType name="nom_type-complexe">
<!-- Définition du modèle de contenu -->
</xsd:complexType>
Constructeurs du modèle de contenu complexe
Trois éléments pour exprimer les modèles de contenu :
Séquence (sequence) : les éléments déclarés par les fils doivent apparaître dans l'instance dans le même ordre que dans le schéma.
Ensemble sans ordre (all) : les éléments déclarés par les fils peuvent apparaître au plus une fois dans l'instance, dans un ordre quelconque. all doit être le seul fils d'un modèle de contenu
Choix (choice) : un seul élément déclaré par un des fils peut apparaître dans l'instance
Un élément "group" offre une facilité d'écriture et est équivalent des entités paramètres de XML (interdit dans all).
Les attributs "minOccurs" et "maxOccurs" s'appliquent aux éléments "sequence", "all" et "choice", et indiquent le nombre d’occurrences des éléments XML.
Valeurs possibles :
minOccurs : entier positif ou nul
maxOccurs : entier positif ou nul, unbounded
Les valeurs par défaut des deux attributs : 1 (une occurrence obligatoire si les deux attributs sont omis)