XSD - Indicateurs complexes
Les indicateurs contrôlent la manière dont les éléments doivent être organisés dans un document XML. Il existe sept types d'indicateurs, répartis en trois grandes catégories.
Indicateurs de commande
All - Les éléments enfants peuvent apparaître dans n'importe quel ordre.
Choice - Un seul élément enfant peut apparaître.
Sequence - L'élément enfant ne peut apparaître que dans l'ordre spécifié.
Indicateurs d'occurrence
maxOccurs - L'élément enfant ne peut apparaître que le nombre maxOccurs de fois.
minOccurs - L'élément enfant doit apparaître au minimum un nombre de fois.
Indicateurs de groupe
Group - Définit l'ensemble d'éléments connexes.
attributeGroup - Définit un ensemble d'attributs associés.
Indicateurs de commande
En utilisant <all>, un élément étudiant peut avoir un prénom, un nom, un surnom et marque un élément enfant dans n'importe quel ordre dans le document XML.
<xs:complexType name = "StudentType" mixed = "true">
<xs:all>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "nickname" type = "xs:string"/>
<xs:element name = "marks" type = "xs:positiveInteger"/>
</xs:all>
<xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>
<xs:element name = 'student' type = 'StudentType' />
En utilisant <choice>, un élément étudiant ne peut avoir qu'un seul élément enfant, prénom, nom, surnom et marque dans le document XML.
<xs:complexType name = "StudentType" mixed = "true">
<xs:choice>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "nickname" type = "xs:string"/>
<xs:element name = "marks" type = "xs:positiveInteger"/>
</xs:choice>
<xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>
<xs:element name = 'student' type = 'StudentType' />
En utilisant <séquence>, un élément étudiant peut avoir le prénom, le nom, le surnom et marque l'élément enfant dans l'ordre spécifié uniquement dans le document XML.
<xs:complexType name = "StudentType" mixed = "true">
<xs:sequence>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "nickname" type = "xs:string"/>
<xs:element name = "marks" type = "xs:positiveInteger"/>
</xs:sequence>
<xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>
<xs:element name = 'student' type = 'StudentType' />
Indicateurs d'occurrence
En utilisant <maxOccurs>, un élément étudiant peut avoir au maximum deux surnoms dans le document XML.
<xs:complexType name = "StudentType" mixed = "true">
<xs:all>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "nickname" type = "xs:string" maxOccurs="2"/>
<xs:element name = "marks" type = "xs:positiveInteger"/>
</xs:all>
<xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>
<xs:element name = 'student' type = 'StudentType' />
En utilisant <minOccurs>, un élément étudiant doit avoir deux surnoms dans le document XML.
<xs:complexType name = "StudentType" mixed = "true">
<xs:all>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "nickname" type = "xs:string" minOccurs="2"/>
<xs:element name = "marks" type = "xs:positiveInteger"/>
</xs:all>
<xs:attribute name = 'rollno' type = 'xs:positiveInteger'/>
</xs:complexType>
<xs:element name = 'student' type = 'StudentType' />
Indicateurs de groupe
<group> est utilisé pour regrouper un ensemble d'éléments liés. Ici, nous avons créé un groupe de partie de nom, puis utilisé ce groupe pour définir unstudent élément.
<xs:group name = "infogroup">
<xs:sequence>
<xs:element name = "firstname" type = "xs:string"/>
<xs:element name = "lastname" type = "xs:string"/>
<xs:element name = "birthdate" type = "xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name = "student" type = "studentType"/>
<xs:complexType name = "studentType">
<xs:sequence>
<xs:group ref = "infogroup"/>
<xs:element name = "marks" type = "xs:integer"/>
</xs:sequence>
</xs:complexType>
<attributeGroup> est utilisé pour regrouper un ensemble d'attributs associé. Ici, nous avons créé un groupe de partie du nom, puis utilisé ce groupe pour définir des attributs pourstudent élément.
<xs:attributeGroup name = "infogroup">
<xs:sequence>
<xs:attribute name = "firstname" type = "xs:string"/>
<xs:attribute name = "lastname" type = "xs:string"/>
<xs:attribute name = "birthdate" type = "xs:date"/>
</xs:sequence>
</xs:attributeGroup>
<xs:element name = "student" type = "studentType"/>
<xs:complexType name = "studentType">
<xs:sequence>
<xs:attributeGroup ref = "infogroup"/>
<xs:element name = "marks" type = "xs:integer"/>
</xs:sequence>
</xs:complexType>