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="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="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):
<name>John Smith</name>
</customer>
Ou quelque chose comme ceci:
<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:
Voir un fragment de schéma XML:
<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):
<name>John Smith</name>
</customer>
Toutefois, le document suivant est plus légitime:
<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.