Indicateur de type composé XSD
- Page précédente Contenu mixte XSD
- Page suivante XSD <any>
Grâce aux indicateurs, nous pouvons contrôler la manière dont les éléments sont utilisés dans le document.
Indicateur
Il y a sept indicateurs :
Indicateur d'ordre :
- Tous
- Choix
- Séquence
Indicateur d'occurrence :
- maxOccurs
- minOccurs
Indicateur de groupe :
- Nom de groupe
- nom de groupe de attribut
Indicateur d'ordre
L'indicateur d'ordre est utilisé pour définir l'ordre des éléments.
Indicateur de tout
L'indicateur <all> stipule que les éléments enfants peuvent apparaître dans n'importe quel ordre et que chaque élément enfant doit apparaître une seule fois :
<xs:element name="person"> <xs:complexType> <xs:all> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:all> </xs:complexType> </xs:element>
Remarque :Lorsque vous utilisez l'indicateur <all>, vous pouvez définir <minOccurs> à 0 ou 1, mais vous ne pouvez définir l'indicateur <maxOccurs> qu'à 1 (qui sera expliqué plus tard).
Indicateur de choix
L'indicateur <choice> stipule que l'un des éléments enfants peut apparaître ou un autre élément enfant peut apparaître (soit l'un soit l'autre) :
<xs:element name="person"> <xs:complexType> <xs:choice> <xs:element name="employee" type="employee"/> <xs:element name="member" type="member"/> </xs:choice> </xs:complexType> </xs:element>
Astuce :Pour définir l'apparition de l'élément enfant à une fréquence indéfinie, vous pouvez définir <maxOccurs> (qui sera expliqué plus tard) comme non limité (à l'infini).
Indicateur de séquence
L'indicateur <sequence> stipule que les éléments enfants doivent apparaître dans un ordre spécifique :
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
Indicateur d'occurrence
L'indicateur d'occurrence est utilisé pour définir la fréquence d'apparition d'un élément.
Remarque :Pour tous les indicateurs "Order" et "Group" (any, all, choice, sequence, nom de groupe et référence de groupe), les valeurs par défaut de maxOccurs et minOccurs sont tous deux 1.
Indicateur maxOccurs
L'indicateur <maxOccurs> permet de définir le nombre maximum d'occurrences d'un élément :
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string"> maxOccurs="10"/> </xs:sequence> </xs:complexType> </xs:element>
Les exemples ci-dessus montrent que l'élément enfant "child_name" peut apparaître dans l'élément "person" au moins une fois (où la valeur par défaut de minOccurs est 1) et au plus 10 fois.
Indicateur minOccurs
L'indicateur <minOccurs> permet de définir le nombre minimum d'occurrences d'un élément :
<xs:element name="person"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string"> maxOccurs="10" minOccurs="0"/> </xs:sequence> </xs:complexType> </xs:element>
Les exemples ci-dessus montrent que l'élément enfant "child_name" peut apparaître dans l'élément "person" au moins 0 fois et au plus 10 fois.
Astuce :Pour rendre le nombre d'apparitions d'un élément illimité, utilisez la déclaration maxOccurs="unbounded" :
Un exemple réel :
Le fichier XML nommé "Myfamily.xml" :
<?xml version="1.0" encoding="ISO-8859-1"?> <persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> xsi:noNamespaceSchemaLocation="family.xsd"> <person> <full_name>Tony Smith</full_name> <child_name>Cecilie</child_name> </person> <person> <full_name>David Smith</full_name> <child_name>Jogn</child_name> <child_name>mike</child_name> <child_name>kyle</child_name> <child_name>mary</child_name> </person> <person> <full_name>Michael Smith</full_name> </person> </persons>
Ce fichier XML contient un élément racine nommé "persons". À l'intérieur de cet élément racine, nous avons défini trois éléments "person". Chaque élément "person" doit contenir un élément "full_name", et il peut contenir jusqu'à 5 éléments "child_name".
C'est le fichier de schéma "family.xsd" :
<?xml version="1.0" encoding="ISO-8859-1"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> elementFormDefault="qualified"> <xs:element name="persons"> <xs:complexType> <xs:sequence> <xs:element name="person" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="full_name" type="xs:string"/> <xs:element name="child_name" type="xs:string"> minOccurs="0" maxOccurs="5"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Indicateur Group
Le indicateur Group est utilisé pour définir des éléments pertinents en lots.
Groupe d'éléments
Un groupe d'éléments est défini par une déclaration group :
<xs:group name="组名称"> ... </xs:group>
Vous devez définir un élément all, choice ou sequence à l'intérieur de la déclaration group. Dans cet exemple, un groupe nommé "persongroup" est défini, qui définit un ensemble d'éléments qui doivent apparaître dans un ordre précis :
<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group>
Après avoir terminé la définition du groupe, vous pouvez le faire référence dans une autre définition :
<xs:group name="persongroup"> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> <xs:element name="birthday" type="xs:date"/> </xs:sequence> </xs:group> <xs:element name="person" type="personinfo"/> <xs:complexType name="personinfo"> <xs:sequence> <xs:group ref="persongroup"/> <xs:element name="country" type="xs:string"/> </xs:sequence> </xs:complexType>
Groupe d'attributs
Un groupe d'attributs est défini par une déclaration attributeGroup :
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
Dans cet exemple, un groupe d'attributs nommé "personattrgroup" est défini :
<xs:attributeGroup name="personattrgroup"> <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 terminé la définition du groupe d'attributs, vous pouvez le faire référence dans une autre définition, comme suit :
<xs:attributeGroup name="personattrgroup"> <xs:attribute name="firstname" type="xs:string"/> <xs:attribute name="lastname" type="xs:string"/> <xs:attribute name="birthday" type="xs:date"/> </xs:attributeGroup> <xs:element name="person"> <xs:complexType> <xs:attributeGroup ref="personattrgroup"/> </xs:complexType> </xs:element>
- Page précédente Contenu mixte XSD
- Page suivante XSD <any>