Élément complexType de XML Schema

Définition et utilisation

L'élément complexType définit un type complexe. Les éléments du type complexe contiennent d'autres éléments et/ou des attributs XML.

元素信息

Informations de l'élément Fréquence d'apparition
Dans le schéma, sans restriction ; dans l'élément, une fois. Parent élément
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|list of (extension|restriction))
any attributes
final=(#all|list of (extension|restriction))
> 
(annotation?,(simpleContent|complexContent|((group|all|
</complexType>

(? Signe déclaré dans l'élément complexType, l'élément peut apparaître zéro ou une fois, * Signe déclaré 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 l'utilisation de types complexes ayant un type dérivé spécifié pour remplacer ce type complexe. Cette valeur peut contenir #all ou une liste, cette liste est un sous-ensemble de extension ou restriction :

  • extension - Empêche l'utilisation de types complexes dérivés par extension pour remplacer ce type complexe.
  • restriction - Empêche l'utilisation de types complexes dérivés par restriction 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 la dérivation de types spécifiés à partir de cet élément complexType. Cette valeur peut contenir #all ou une liste, qui est un sous-ensemble de extension ou 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" ci-dessus doit inclure en ordre les éléments suivants : "firstname", "lastname", "address", "city" et "country".