Marquage lié aux schémas dans les documents XML
xsi:nil, xsi:type, xsi:schemaLocationet xsi:noNamespaceSchemaLocation.Le marquage lié aux schémas dans les documents XML inclut les éléments suivants :
xsi:nil
Lorsqu'un élément XML est
réglé sur xsi:nil dans l'instance de document XML, le champ de classe dynamique
associé est mis à null. L'opérateur isunknown appliqué dans ce champ
renvoie true. En d'autres termes, lorsqu'un objet XML est sérialisé par la méthode driver.writeObject, les informations suivantes sont ajoutées à cet objet :
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
Exemple de mappage xsi:nil dans un document XML
L'exemple suivant illustre le mappage
xsi:nil dans un document XML. La règle detectPersonWithMissingAddress
utilise le mot clé isunknown pour trouver une personne dont l'adresse
est inconnue.
Dans cet exemple :
xsiest le nom de l'espace de nomL'instance
http://www.w3.org/2001/XMLSchemaest l'URLnilest l'un des éléments de l'espace de nom
Le schéma est le suivant :
<element name="person">
<complexType>
<sequence>
<element name="surname"/>
<element name="address" nillable="true"/>
</sequence>
<complexType>
</element>
Voici l'extrait d'un document XML :
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<surname>Smith</surname>
<address xsi:nil="true"/>
</person>
La règle est la suivante :
rule detectPersonWithMissingAddress
{
when {
Person ( address isunknown );
}
then {
...
}
}
Les espaces de nom XML sont conçus pour fournir des noms uniques universels pour les éléments et les attributs. Les développeurs peuvent les utiliser pour réaliser les actions suivantes :
Combiner des fragments de documents différents sans conflit de désignation.
Ecrire des modules de code réutilisable pouvant être appelés pour des éléments et des attributs spécifiques. Les noms uniques universels garantissent que ces modules sont appelés uniquement pour les éléments et les attributs appropriés.
Définir des éléments et des attributs pouvant être réutilisés dans d'autres schémas sans aucun risque de conflit de nom.
xsi:type
Pour affiner le type d'un élément dans le document XML, vous pouvez utiliser le polymorphisme xsi. Cette fonction remplace un sous-type pour le type standard de l'élément.
Exemple de mappage xsi:type dans un document XML
L'exemple suivant montre comment utiliser le polymorphisme xsi. Cet exemple utilise un schéma et un extrait de document XML.
Le schéma est le suivant :
<element name="person" type="person"/>
<complexType name=" person " >
<sequence>
<element name="name">
<element name="surname">
</sequence>
</complexType>
<complexType name=" inhabitant ">
<complexContent>
<extension base="person">
<sequence>
<element name="address"/>
</sequence>
</extension>
</complexType>
Voici l'extrait d'un document XML :
<person xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance
xsi:type="inhabitant">
<name>John</name>
<surname>Smith</surname>
<address>123 Downing Street, London</address>
</person>
xsi:schemaLocation et xsi:noNamespaceSchemaLocation
Ces fonctions sont prises en charge par l'analyseur syntaxique. Cependant, les informations obtenues ne sont pas utilisées dans la liaison XML.