La spécification XML Inclusions propose un mécanisme d'inclusion de ressources distantes dans un document XML.

La mise en oeuvre de cette proposition s'effectue par l'intermédiaire de l'insertion d'un élément <xi:include> à la position désirée pour l'inclusion de la ressource distante.

<xi:include href="URI" parse="type" encoding="encodage"/>

L'élément <xi:include> possède un espace de noms standardisé par le World Wide Web Consortium (W3C)

http://www.w3.org/2001/XInclude

Les inclusions peuvent se réaliser sur tout type de ressources XML, à l'image des noeuds d'éléments, d'attributs, de textes, d'instructions de traitement, de commentaire, mais aussi gràce aux XPointers, d'intervalles de noeuds ou de texte.

Les attributs
Attribut Valeur Description
href URI spécifie l'adresse URI de la ressource distante.
parse xml
text
indique le type de format souhaité.
encoding CDATA indique l'encodage de la ressource distante.

L'adresse URI de l'attribut href peut être absolue ou relative et peut contenir des fragments de localisation, soit des expressions XPointer.

L'attribut parse accepte deux valeurs,

  • xml, indiquant que les ressources distantes doivent être analysées comme des données XML, puis sont fusionnées dans le document.
  • text, signifiant que les ressources distantes doivent être incluses dans le document comme le contenu d'un noeud textuel.

Enfin, l'attribut d'encodage encoding accepte n'importe quel jeu de caractères standardisé, afin de traduire les données textuelles dans le format adéquat. Cet attribut n'a aucun effet lorsque parse possède la valeur xml.

La déclaration dans la DTD

L'utilisation des éléments et attributs d'inclusion nécessite une déclaration préalable dans la Définition de Type de Document (DTD).

<!ELEMENT xi:include EMPTY>
<!ATTLIST xi:include
             xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
             href CDATA #REQUIRED
             parse (xml|text) "xml"
             encoding CDATA #IMPLIED>
Exemple :
<!-- Document des éléments à inclure : page.xml -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE page SYSTEM "def_page.dtd">
<page>
<partie id="entete">
  Librairie du Grand Colbert
  ...
</partie>
<partie id="baspage">
  Copyright 2001 Groupe Library Ent. SA 100 000 Francs
  ...
</partie>
</page>
<!-- Document accueillant les inclusions : biblio.xml-->
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE bibliothèque [
  <!ELEMENT bibliothèque ANY>
  <!ELEMENT xi:include EMPTY>
  <!ATTLIST xi:include
             xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
             href CDATA #REQUIRED
             parse (xml|text) "xml"
             encoding CDATA #IMPLIED>
  <!ELEMENT livre (titre,numero)>
  <!ELEMENT collection (titre,numero)>
  <!ELEMENT titre (#PCDATA)>
  <!ELEMENT numero (#PCDATA)>
]>
<bibliothèque>
  <xi:include parse="xml" href="page.xml#xpointer(id('entete'))"/>
  <livre>
  <titre>La bible XML</titre>
  <numero>XML0023</numero>
  </livre>
  <collection>
  <titre>XML, par la pratique</titre>
  <numero>XML1023</numero>
  </collection>
  <piedpage>
  <xi:include 
        parse="text"
        encoding="ISO-8859-1"
        href="page.xml#xpointer(string-range(/*[1]/*[2],
                                                 'Copyright 2001 Groupe Library Ent.'))"/>
  </piedpage>
</bibliothèque>
<!-- Document résultant -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<bibliothèque>
  <partie id="entete">
  Librairie du Grand Colbert
  ...
  </partie>
  <livre>
  <titre>La bible XML</titre>
  <numero>XML0023</numero>
  </livre>
  <collection>
  <titre>XML, par la pratique</titre>
  <numero>XML1023</numero>
  </collection>
  <piedpage>
  Copyright 2001 Groupe Library Ent.
  </piedpage>
</bibliothèque>