Latest web development tutorials

Remplacer les éléments de schéma XML

Par le schéma XML, un élément peut être remplacé par un autre élément.


Les éléments remplacés

Illustrons: nos clients du Royaume-Uni et de la Norvège. Nous voulons avoir la possibilité de laisser les utilisateurs choisissent d'utiliser les noms des éléments norvégiens dans le document XML ou le nom anglais de l'élément.

Pour résoudre ce problème, nous pouvons définir une substitutionGroup dans le schéma XML. Tout d'abord, nous déclarons l'élément principal, alors nous déclarons éléments mineurs, ces éléments peuvent être déclarés une fois qu'ils sont en mesure de remplacer l'élément primaire.

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

Dans l'exemple ci-dessus, élément "name" est l'élément principal, l'élément "navn" peut remplacer l'élément "name".

Considérons un fragment de 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"/>

document XML valide comme celui-ci (selon le schéma ci-dessus):

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

Ou quelque chose comme ceci:

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


Remplacer l'élément d'arrêt

Pour éviter d'autres éléments remplacent un élément spécifié, utilisez les propriétés du bloc:

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

Voir un fragment de 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"/>

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

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

Toutefois, le document suivant est plus légitime:

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


Utilisez substitutionGroup

éléments remplaçables doivent être les principaux éléments du même type, ou dérivé de l'élément principal. Si le type peut remplacer les éléments des principaux éléments du même type, vous ne devrez pas spécifier le type de l'élément peut être remplacé.

S'il vous plaît noter, substitutionGroup tous les éléments dans les (éléments primaires et des éléments remplaçables) doivent être déclarés comme éléments globaux, sinon cela ne fonctionnera pas!


Quel est l'élément global (Global Elements)?

élément mondial se réfère aux éléments enfants directs de l'élément "schema"! Les éléments locaux (éléments locaux) se réfère aux éléments imbriqués dans d'autres éléments.