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

Substitution d'éléments XSD


Avec les schémas XML, un élément peut remplacer un autre élément.


Substitution d'élément

Disons que nous avons des utilisateurs de deux pays différents : l'Angleterre et la Norvège. Nous aimerions pouvoir laisser l'utilisateur choisir s'il souhaite utiliser les noms d'éléments norvégiens ou les noms d'éléments anglais dans le document XML.

Pour résoudre ce problème, nous pourrions définir un substitutionGroup dans le schéma XML. Tout d'abord, nous déclarons un élément de tête, puis nous déclarons les autres éléments qui déclarent qu'ils sont substituables à l'élément de tête.

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

Dans l'exemple ci-dessus, l'élément "name" est l'élément head et l'élément "navn" est substituable à "name".

Regardez ce fragment d'un schéma XML :

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

Un document XML valide (selon le schéma ci-dessus) pourrait ressembler à ceci :

<customer>
  <name>John Smith</name>
</customer>

ou comme ceci :

<kunde>
  <navn>John Smith</navn>
</kunde>


Substitution d'éléments bloquants

Pour empêcher d'autres éléments de se substituer à un élément spécifié, utilisez l'attribut block :

<xs:element name="name" type="xs:string" block="substitution"/>

Regardez ce fragment d'un schéma XML :

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>

<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>

<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

Un document XML valide (selon le schéma ci-dessus) ressemble à ceci :

<customer>
  <name>John Smith</name>
</customer>

MAIS CELA N'EST PLUS VALABLE :

<kunde>
  <navn>John Smith</navn>
</kunde>

Utilisation du groupe de substitution

Le type des éléments substituables doit être identique ou dérivé du type de l'élément principal. Si le type de l'élément substituable est le même que le type de l'élément principal, vous n'aurez pas à spécifier le type de l'élément substituable.

Notez que tous les éléments du groupe substitution (l'élément principal et les éléments substituables) doivent être déclarés comme éléments globaux, sinon cela ne fonctionnera pas !


Que sont les éléments globaux ?

Les éléments globaux sont des éléments qui sont des enfants immédiats de l'élément "schema" ! Les éléments locaux sont des éléments imbriqués dans d'autres éléments.