é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".