Tutoriel XML

ACCUEIL XML Introduction XML XML Comment utiliser Arbre XML Syntaxe XML Éléments XML Attributs XML Espaces de noms XML Affichage XML Requête HTTP XML Analyseur XML DOM XML XPath XML XML XSLT XQuery XML XMLXLink Validateur XML DTD XML Schéma XML Serveur XML Exemples XML XML Quiz Certificat XML

XMLAJAX

Présentation d'AJAX AJAX XMLHttp Requête AJAX Réponse AJAX Fichier XML AJAX PHP AJAX ASP AJAX Base de données AJAX Applications AJAX Exemples AJAX

DOM XML

Présentation du DOM Nœuds DOM Accès au DOM Informations sur le nœud DOM Liste des nœuds DOM Traversée du DOM Navigation DOM DOM Obtenir des valeurs Nœuds de changement DOM DOM Supprimer les nœuds DOM Remplacer les nœuds DOM Créer des nœuds DOM Ajouter des nœuds Nœuds de clonage DOM Exemples DOM

Tutoriel XPath

Présentation de XPath Nœuds XPath Syntaxe XPath Axes XPath Opérateurs XPath Exemples XPath

Tutoriel XSLT

Présentation de XSLT Langages XSL Transformation XSLT XSLT <modèle> XSLT <valeur-de> XSLT <pour-chaque> XSLT <sort> XSLT <si> XSLT <choisir> Appliquer XSLT XSLT sur le client XSLT sur le serveur XSLT Éditer XML Exemples XSLT

Tutoriel XQuery

Présentation de XQuery Exemple XQuery XQuery FLWOR XQuery HTML Termes XQuery Syntaxe XQuery Ajouter XQuery Sélection XQuery Fonctions XQuery

DTD XML

Présentation de la DTD Blocs de construction DTD Éléments DTD Attributs DTD Éléments DTD vs Attr Entités DTD Exemples de DTD

Schéma XSD

Présentation XSD Comment XSD XSD <schéma> Éléments XSD Attributs XSD Restrictions XSD

Complexe XSD

Éléments XSD XSD vide Éléments XSD uniquement Texte XSD uniquement XSD Mixte Indicateurs XSD XSD <tout> XSD <anyAttribute> Remplacement XSD Exemple XSD

Données XSD

Chaîne XSD Date XSD Numérique XSD Divers XSD Référence XSD

Services Web

Services XML XMLWSDL SAVON XML XML RDF XML RSS

Les références

Types de nœuds DOM Nœud DOM Liste de nœuds DOM DOM NamedNodeMap Documents DOM Élément DOM Attribut DOM Texte DOM DOM CDATA DOM Comment DOM XMLHttpRequest Analyseur DOM Éléments XSLT Fonctions XSLT/XPath

Indicateurs XSD


Nous pouvons contrôler COMMENT les éléments doivent être utilisés dans les documents avec des indicateurs.


Indicateurs

Il y a sept indicateurs :

Indicateurs de commande :

  • Tout
  • Choix
  • Séquence

Indicateurs d'occurrence :

  • maxOccurs
  • minOccurs

Indicateurs Groupe :

  • Nom de groupe
  • nom du groupe d'attributs

Indicateurs de commande

Les indicateurs d'ordre permettent de définir l'ordre des éléments.

Tous les indicateurs

L'indicateur <all> 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: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 régler l'indicateur <minOccurs> sur 0 ou 1 et l'indicateur <maxOccurs> ne peut être réglé que sur 1 (les <minOccurs> et <maxOccurs> sont décrits plus loin).

Indicateur de choix

L'indicateur <choice> spécifie qu'un élément enfant ou un autre peut apparaître :

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

Indicateur de séquence

L'indicateur <sequence> spécifie 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>


Indicateurs d'occurrence

Les indicateurs d'occurrence sont utilisés pour définir la fréquence à laquelle un élément peut se produire.

Remarque : Pour tous les indicateurs "Ordre" et "Groupe" (tous, tous, choix, séquence, nom de groupe et référence de groupe), la valeur par défaut pour maxOccurs et minOccurs est 1.

Indicateur maxOccurs

L'indicateur <maxOccurs> spécifie le nombre maximum de fois qu'un élément peut se produire :

<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 indique que l'élément "child_name" peut apparaître au minimum une fois (la valeur par défaut de minOccurs est 1) et au maximum dix fois dans l'élément "person".

Indicateur minOccurs

L'indicateur <minOccurs> spécifie le nombre minimum de fois qu'un élément peut se produire :

<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 indique que l'élément "child_name" peut apparaître au minimum zéro fois et au maximum dix fois dans l'élément "person".

Astuce : Pour permettre à un élément d'apparaître un nombre illimité de fois, utilisez l'instruction maxOccurs="unbounded" :

Un exemple de travail :

Un fichier XML appelé "Mafamille.xml":

<?xml version="1.0" encoding="UTF-8"?>

<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">

<person>
  <full_name>Hege Refsnes</full_name>
  <child_name>Cecilie</child_name>
</person>

<person>
  <full_name>Tove Refsnes</full_name>
  <child_name>Hege</child_name>
  <child_name>Stale</child_name>
  <child_name>Jim</child_name>
  <child_name>Borge</child_name>
</person>

<person>
  <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 avons défini trois éléments "person". Chaque élément "person" doit contenir un élément "full_name" et il peut contenir jusqu'à cinq éléments "child_name".

Voici le fichier de schéma "family.xsd":

<?xml version="1.0" encoding="UTF-8"?>
<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>

Indicateurs du groupe

Les indicateurs de groupe sont utilisés pour définir des ensembles d'éléments liés.

Groupes d'éléments

Les groupes d'éléments sont définis avec la déclaration de groupe, comme ceci :

<xs:group name="groupname">
...
</xs:group>

Vous devez définir un élément all, choice ou sequence dans la déclaration de groupe. L'exemple suivant définit un groupe nommé "persongroup", qui définit un groupe d'éléments qui doivent apparaître dans une séquence exacte :

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

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

Groupes d'attributs

Les groupes d'attributs sont définis avec la déclaration attributeGroup, comme ceci :

<xs:attributeGroup name="groupname">
...
</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 défini un groupe d'attributs, vous pouvez le 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="birthday" type="xs:date"/>
</xs:attributeGroup>

<xs:element name="person">
  <xs:complexType>
    <xs:attributeGroup ref="personattrgroup"/>
  </xs:complexType>
</xs:element>