Indicateur de schéma XML
XSD Indicateurs
Les indicateurs nous permettent de contrôler la façon dont les éléments sont utilisés dans le document.
Indicateur
Il existe sept types d'indicateurs :
Indicateur de commande :
Tous
Choix
Séquence
Indicateur d'occurrence :
maxOccurs
minOccurs
Indicateur de groupe :
Nom du groupe
-
attributeGroup name
Indicateur d'ordre
L'indicateur d'ordre est utilisé pour définir l'ordre des éléments.
Tous les indicateurs
<all> L'indicateur spécifie que les éléments enfants peuvent apparaître dans n'importe quel ordre et que chaque élément enfant ne doit apparaître qu'une seule fois :
<xs:complexType>
<xs:tous>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:tous>
</xs:complexType>
</xs:element>
Remarque : Lorsque vous utilisez l'indicateur <all> est défini sur 0 ou 1, et seul l'indicateur <maxOccurs> peut être défini sur 1 (<minOccurs> et <maxOccurs> seront expliqués plus tard).
Indicateur de choix
<choix> L'indicateur précise qu'un certain élément enfant peut apparaître ou qu'un autre élément enfant peut apparaître (l'un ou l'autre) :
<xs:complexType>
<xs:choix>
<xs:element name="employé" type="employé"/>
<xs:element name="membre" type="membre"/>
</xs:choix>
</xs:complexType>
</xs:element>
Indicateur de séquence
<sequence> spécifie que les éléments enfants doivent apparaître dans un ordre spécifique :
<xs:complexType>
<xs:séquence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:séquence>
</xs:complexType>
</xs:element>
Indicateur d'occurrence
L'indicateur d'occurrence est utilisé pour définir l'occurrence d'un fréquence des éléments.
Remarque : Pour tous les indicateurs "Ordre" et "Groupe" (tout, tout, choix, séquence, nom de groupe et référence de groupe), les valeurs par défaut de maxOccurs et minOccurs sont Les deux valent 1.
Indicateur maxOccurs
<maxOccurs> L'indicateur précise le nombre maximum de fois qu'un élément peut apparaître :
<xs:complexType>
<xs:séquence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string" maxOccurs="10"/>
</xs:séquence>
</xs:complexType>
</xs:element>
L'exemple ci-dessus montre que l'élément enfant "child_name" peut apparaître au moins une fois dans l'élément "person" (où minOccurs La valeur par défaut est 1), ce qui peut se produire jusqu'à 10 fois.
Indicateur minOccurs
<minOccurs> L'indicateur précise le nombre minimum de fois qu'un élément peut apparaître :
<xs:complexType>
<xs:séquence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
maxOccurs="10" minOccurs="0"/>
</xs:séquence>
</xs:complexType>
</xs:element>
L'exemple ci-dessus montre que l'élément enfant "child_name" peut apparaître au moins 0 fois et au plus 10 fois dans l'élément "person".
Astuce : Pour rendre illimité le nombre d'occurrences d'un élément, veuillez utiliser l'instruction maxOccurs="unbounded" :
Un exemple pratique :
Fichier XML nommé "Mafamille.xml" :
<persons xmlns :xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<personne>
<full_name>Hege Refsnes</full_name>
<nom_enfant>Cécilie</nom_enfant>
</personne>
<personne>
<full_name>Tove Refsnes</full_name>
<nom_enfant>Hege</nom_enfant>
<nom_enfant>Obsolète</nom_enfant>
<nom_enfant>Jim</nom_enfant>
<nom_enfant>Borge</nom_enfant>
</personne>
<personne>
<full_name>Stale Refsnes</full_name>
</person>
</persons>
Le fichier XML ci-dessus contient un élément racine nommé « personnes ». A l'intérieur de cet élément racine, nous définissons trois éléments "personne". Chaque élément "personne" doit contenir un élément "full_name", et il peut contenir jusqu'à 5 éléments "child_name".
Voici le fichier de schéma "family.xsd" :
< ;xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons" > ;
<xs:complexType>
<xs:séquence>
<xs:element name="personne" maxOccurs="unbounded">
<xs:complexType>
<xs:séquence>
<xs:element name="full_name" type="xs:string"/>
<xs:element name="child_name" type="xs:string"
minOccurs="0" maxOccurs="5"/>
</xs:séquence>
</xs:complexType>
</xs:élément>
</xs:séquence>
</xs:complexType>
</xs:element>
</xs:schema>
Indicateur de groupe
L'indicateur de groupe est utilisé pour définir les éléments de lot associés.
Groupes d'éléments
Les groupes d'éléments sont définis via la déclaration de groupe :
...
</xs:group>
Vous devez définir un élément all, Choice ou Sequence à l'intérieur de la déclaration de groupe. L'exemple suivant définit un groupe nommé "persongroup", qui définit un ensemble d'éléments qui doivent apparaître dans un ordre précis :
<xs:séquence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="anniversaire" type="xs:date"/>
</xs:séquence>
</xs:group>
Après avoir défini le groupe, vous pouvez le référencer dans une autre définition :
<xs:séquence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="anniversaire" type="xs:date"/>
</xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs :complexType name="personinfo">
<xs:séquence>
<xs:group ref="persongroup"/>
<xs:element name="pays" type="xs:string"/>
</xs:sequence>
</xs:complexType>
Groupe d'attributs
Les groupes d'attributs sont définis via la déclaration d'attributGroup :
...
</xs:attributeGroup>
L'exemple suivant définit un groupe nommé "personattrgroup" An groupe d'attributs :
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
Après avoir défini le groupe d'attributs, vous pouvez référencer dans une autre définition, comme ceci :
<xs:attribute name="firstname" type="xs:string"/>
<xs:attribute name="lastname" type="xs:string"/>
<xs:attribute name="anniversaire" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
<xs:complexType>
<xs:attributeGroup ref="personattrgroup"/>
</xs:complexType>
</xs:element>