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

Remplacement d'éléments de schéma XML


XSD Substitution d'éléments


Grâce au schéma XML, un élément peut remplacer un autre élément.


Remplacement d'éléments

Donnons un exemple : nos utilisateurs viennent du Royaume-Uni et de la Norvège. Nous aimerions que les utilisateurs puissent choisir d'utiliser des noms d'éléments norvégiens ou anglais dans un document XML.

Pour résoudre ce problème, nous pouvons définir un substitutionGroup dans le schéma XML. Tout d’abord, nous déclarons l’élément principal, puis nous déclarons les éléments secondaires, qui déclarent qu’ils peuvent remplacer l’élément principal.

<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 principal, et l'élément "navn" peut remplacer l'élément "name".

Veuillez regarder un fragment du schéma XML :

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

<xs:complexType name="custinfo">
<xs:séquence>
<xs:element ref="nom"/>
</xs:sequence>
</xs:complexType>

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

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

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

ou quelque chose comme ceci :

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


Empêcher le remplacement d'un élément

Pour empêcher d'autres éléments de remplacer un élément Pour l'élément spécifié, veuillez utiliser l'attribut block :

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

Veuillez consulter un 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:séquence>
<xs:element ref="nom"/>
</xs:sequence>
</xs:complexType>

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

Le document XML légal doit être similaire à ceci (selon le schéma ci-dessus) :

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

Mais le document suivant n'est plus valide :

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


Utiliser substitutionGroup

Le type de l'élément remplaçable doit être le identique à l'élément principal Identique ou dérivé de l'élément principal. Si le type de l'élément remplaçable est le même que le type de l'élément principal, vous n'avez pas besoin de spécifier le type de l'élément remplaçable.

Veuillez noter que tous les éléments du substitutionGroup (éléments principaux et éléments remplaçables) doivent être déclarés comme éléments globaux, sinon cela ne fonctionnera pas !


Que sont les éléments globaux ?

Les éléments globaux font référence aux éléments enfants directs de l'élément « schéma » ! Les éléments locaux font référence à des éléments imbriqués dans d'autres éléments.

Site Web PHP chinois