élément complexType du XML Schema
définition et utilisation
élément complexType définit un type complexe. Un élément de type complexe contient d'autres éléments et/ou des attributs de l'élément XML.
informations de l'élément
nombre d'apparitions | sans restriction dans le schéma ; une seule fois dans l'élément. |
élément parent | element, redefine, schema |
contenu | annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
Grammaire
<complexType id=ID name=NCName abstract=true|false mixed=true|false block=(#all|liste de (extension|restriction)) final=(#all|liste de (extension|restriction)) any attributes > (annotation?,(simpleContent|complexContent|((groupe|all| choice|sequence)?,((attribut|groupe d'attributs)*,attribut quelconque?)))) </complexType>
(? Signe de déclaration dans l'élément complexType, l'élément peut apparaître zéro ou une fois, * Signe de déclaration de l'élément peut apparaître zéro ou plusieurs fois).
Attributs
id
Optionnel. Détermine l'ID unique de cet élément.
name
Optionnel. Détermine le nom de l'élément.
abstract
Optionnel. Détermine si le type complexe peut être utilisé dans le document d'instance. Si cette valeur est true, l'élément ne peut pas utiliser directement ce type complexe, mais doit utiliser un type complexe dérivé de ce type complexe. La valeur par défaut est false.
mixed
Optionnel. Détermine si les données de caractères peuvent apparaître entre les sous-éléments de ce type complexe. La valeur par défaut est false.
- Si l'élément simpleContent est un sous-élément, l'attribut mixed n'est pas autorisé.
- Si l'élément complexContent est un sous-élément, l'attribut mixed peut être redéfini par l'attribut mixed de l'élément complexContent.
block
Optionnel. Empêche les types complexes dérivés de ce type spécifié d'être utilisés pour remplacer ce type complexe. Cette valeur peut contenir #all ou une liste, cette liste étant un sous-ensemble d'extension ou de restriction :
- extension - Empêche les types complexes dérivés par extension d'être utilisés pour remplacer ce type complexe.
- restriction - Empêche les types complexes dérivés par restriction d'être utilisés pour remplacer ce type complexe.
- #all - Empêche tous les types complexes dérivés d'être utilisés pour remplacer ce type complexe.
final
Optionnel. Empêche que les types dérivés de ce complexType soient utilisés pour remplacer ce type complexe. Cette valeur peut contenir #all ou une liste, cette liste étant un sous-ensemble d'extension ou de restriction.
- extension - Empêche les dérivations par extension.
- restriction - Empêche les dérivations par restriction.
- #all - Empêche toutes les dérivations (extensions et restrictions).
any attributes
Optionnel. Définir toute autre propriété avec un espace de noms non-schématique.
Exemple
Exemple 1
Dans cet exemple, il y a un élément complexe nommé "note":
<xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element name="to" type="xs:string"/> <xs:element name="from" type="xs:string"/> <xs:element name="heading" type="xs:string"/> <xs:element name="body" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Exemple 2
Dans cet exemple, il y a un type complexe "fullpersoninfo" qui étend le type hérité en utilisant trois éléments supplémentaires (address, city et country), dérivé d'un autre type complexe "personinfo":
<xs:element name="employee" type="fullpersoninfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="fullpersoninfo"> <xs:complexContent> <xs:extension base="personinfo"> <xs:sequence> <xs:element name="address" type="xs:string"/> <xs:element name="city" type="xs:string"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>
Dans l'exemple ci-dessus, l'élément "employee" doit inclure en ordre les éléments suivants : "firstname", "lastname", "address", "city" et "country".