Marquage lié aux schémas dans les documents XML

Le marquage lié au schéma dans les documents XML inclut 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 :

  • xsi est le nom de l'espace de nom

  • L'instance http://www.w3.org/2001/XMLSchema est l'URL

  • nil est 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.