Indicateur de type composite 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 du groupe
- attributeGroup name
Indicateur d'ordre
L'indicateur d'ordre est utilisé pour définir l'ordre des éléments.
Indicateur d'ensemble
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 configurer <minOccurs> en 0 ou 1, et ne pouvez configurer l'indicateur <maxOccurs> qu'en 1 (qui sera expliqué plus tard).
Indicateur de choix
L'indicateur <choice> stipule qu'un élément enfant peut apparaître ou qu'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>
Avis:Pour définir l'apparition d'un élément enfant à n'importe quelle fréquence, configurez <maxOccurs> (qui sera expliqué plus tard) en unbounded (sans limite).
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éterminer le nombre maximum d'apparitions 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>
L'exemple ci-dessus montre que l'élément enfant "child_name" peut apparaître au moins une fois dans l'élément "person" (la valeur par défaut de minOccurs est 1) et au plus 10 fois.
Indicateur minOccurs
L'indicateur <minOccurs> permet de déterminer le nombre minimum d'apparitions 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>
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".
Avis:Pour que la fréquence d'apparition d'un élément ne soit pas limitée, utilisez l'indication 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>
Le fichier XML ci-dessus 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".
Ceci 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>
Marqueur Group
Le marqueur Group est utilisé pour définir les éléments de lot pertinents.
Groupe d'éléments
Le groupe d'éléments est défini par la 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. 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: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
Le groupe d'attributs est défini par la déclaration attributeGroup :
<xs:attributeGroup name="组名称"> ... </xs:attributeGroup>
L'exemple suivant définit un groupe d'attributs nommé "personattrgroup" :
<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>