Élément <xsd:complexType>
Définit un type complexe, qui détermine l'ensemble d'attributs et le contenu d'un élément.
<complexType
abstract = Boolean : false
block = (#all | List of (extension | restriction))
final = (#all | List of (extension | restriction))
id = ID
mixed = Boolean : false
name = NCName
{any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleContent | complexContent | ((group | all |
choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>
Attributs
abstract
Indique si le type complexe peut être utilisé dans un document d'instance. Si cette valeur est true, un élément ne peut pas utiliser directement ce type complexe, mais un type complexe dérivé du type considéré. La valeur par défaut est false.Facultatif.
block
Type de dérivation. L'attribut block empêche d'utiliser, à la place de ce type complexe, un type complexe ayant le type de dérivation spécifié. Cette valeur peut contenir #all ou une liste constituant un sous-ensemble de l'attribut extension ou restriction. L'attribut block n'est utilisé que lorsque, au cours de la validation, un document d'instance se substitue au type normal d'un élément en utilisant l'attribut schema-instance:type. L'attribut block peut empêcher des éléments de sélectionner des types complexes définis par extension et/ou restriction pour remplacer le type d'origine spécifié pour l'élément.extension
Empêche des types complexes dérivés par extension d'être utilisés à la place de ce type complexe.
restriction
Empêche des types complexes dérivés par restriction d'être utilisés à la place de ce type complexe.
#all
Empêche tous les types complexes dérivés d'être utilisés à la place de ce type complexe.
Facultatif.
final
Type de dérivation. L'attribut final empêche le type spécifié de dérivation de cet élément complexType. Cette valeur peut contenir #all ou une liste constituant un sous-ensemble de l'attribut extension ou restriction.extension
Empêche la dérivation par extension.
restriction
Empêche la dérivation par restriction.
#all
Empêche toute dérivation (que ce soit par extension ou par restriction).
Facultatif.
id
ID de cet élément. La valeur id doit être du type ID et unique dans le document contenant cet élément.Facultatif.
mixed
Indique si des données de type caractère sont autorisées à apparaître entre les éléments enfants de ce type complexe. La valeur par défaut est false.Si l'élément simpleContent est un élément enfant, l'attribut mixed n'est pas autorisé.
Si l'élément complexContent est un élément enfant, cet attribut mixed peut être substitué par l'attribut mixed sur l'élément complexContent.
Facultatif.
name
Nom du type. Ce nom doit être un NCName, comme défini dans la spécification des espaces de noms XML.Obligatoire si l'élément conteneur est l'élément schema ; sinon, interdit.
S'il est spécifié, le nom doit être unique parmi tous les éléments simpleType et complexType.
Facultatif.
Informations sur l'élément
Nombre d'occurrences |
Illimité dans un schéma ; peut apparaître une fois dans un élément. |
Éléments parents |
|
Contenu |
annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute |
Notes
Un type complexe constitue essentiellement une définition de type pour des éléments qui peuvent contenir des attributs et des éléments. Un élément peut être déclaré avec un attribut type faisant référence à un élément complexType qui définit la structure, le contenu et les attributs de cet élément. (Un élément peut aussi accepter une référence à un simpleType dans son attribut type.)
Un type complexe peut contenir un seul des éléments suivants, qui détermine le type de contenu autorisé dans le type complexe.
Élément | Description |
---|---|
simpleContent |
Le type complexe comporte des données de type caractère ou un simpleType en tant que contenu et ne contient aucun élément, mais peut contenir des attributs. |
complexContent |
Le type complexe contient uniquement des éléments ou aucun contenu d'élément (vide). |
group |
Le type complexe contient les éléments définis dans le groupe référencé. |
sequence |
Le type complexe contient les éléments définis dans la séquence spécifiée. |
choice |
Le type complexe accepte l'un des éléments spécifiés dans l'élément choice. |
all |
Le type complexe permet à certains ou la totalité des éléments spécifiés dans l'élément all d'apparaître une fois. |
Si group, sequence, choice ou all est spécifié en tant qu'élément enfant, les attributs de l'élément complexType peuvent être déclarés, de façon facultative, à l'aide des éléments suivants.
Élément | Description |
---|---|
attribute |
Le type complexe contient l'attribut spécifié. |
attributeGroup |
Le type complexe contient les attributs définis dans l'attributeGroup référencé. |
anyAttribute |
Le type complexe peut contenir tout attribut du ou des espaces de noms spécifiés. |
Vous pouvez utiliser un nombre quelconque d'éléments attribute ou attributeGroup. Une instance d'anyAttribute peut aussi être utilisée.
Si group, sequence, choice ou all est spécifié, les éléments doivent apparaître dans l'ordre suivant.
group | sequence | choice | all
attribute | attributeGroup
anyAttribute
Exemples
L'exemple suivant illustre un type complexe qui contient un type simple (decimal) avec un attribut et une déclaration d'élément utilisant un type complexe.
<xs:complexType name='internationalShoeSize'>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name='myShoeSize' type='internationalShoeSize'/>
L'exemple suivant montre une instance de l'élément myShoeSize dans un document XML.
<myShoeSize sizing='UK'>10.5</myShoeSize>
L'exemple suivant montre l'élément myShoeSize avec la définition anonyme du complexType dans l'élément. (Notez l'absence de l'attribut name.)
<xs:element name='myShoeSize'>
<xs:complexType>
<xs:simpleContent>
<xs:extension base='xs:decimal'>
<xs:attribute name='sizing' type='xs:string' />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>