Tutoriel sur le...login
Tutoriel sur le schéma XML
auteur:php.cn  temps de mise à jour:2022-04-20 14:13:02

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 : nom de l'élément ="personne">
<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:element name="personne">
<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:element name="person">
<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:element name="person " >
<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:element name="person " >
<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" :

<?xml version="1.0" encoding="ISO-8859-1"?>

<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" :

<?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: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 name="groupname">
...
</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:group name="persongroup">
<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:group name="persongroup">
<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 name="groupname">
...
</xs:attributeGroup>

L'exemple suivant définit un groupe nommé "personattrgroup" An groupe d'attributs :

<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 défini le groupe d'attributs, vous pouvez référencer dans une autre définition, comme ceci :

<xs:attributeGroup name="personattrgroup">
<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>

Site Web PHP chinois