XPointer

1. Présentation

En complément de XLink et utilisant XPath, il existe un standard de syntaxe non XML qui localise des noeuds, des points ou des régions dans des documents : XPointer2 (http://www.w3.org/XML/Linking). Utilisé conjointement avec XPath, XPointer permet de localiser des structures XML dans un document distant. Attaché à la fin des URI, après un "#", comme un identifiant de fragment HTML, il permet d’indiquer une partie spécifique d'un document XML, vue d’un autre document.

Par exemple «http://www.mon-site.fr/mon_fic.xml#xpointer(/html/head/title)» indique l’élément «title» de l’entête XHTML dans le document «http://www.mon-site.fr/mon_fic.xml». Ce standard complète XLink au niveau de l’attribut «href» (voir section précédente). Dans le cadre de XPointer, XPath est étendu pour affiner la localisation des informations (référence par la position, points de référence dans les noeuds textes, etc.).

2. Syntaxe

La syntaxe de base est la suivante : «en*xp+». Soit d’abord, éventuellement, des définitions d’espaces de nom («en»). Les espaces de noms sont décrits de la manière suivante : « xmlns(pref=URI)» où «pref» est le préfixe qui sera utilisé et «URI» décrit l’espace de noms. Puis une suite de références («xp»), la première dans l’ordre de déclaration retournant un résultat non vide est alors conservée. Les différents «xp» possibles sont :

Voici quelques exemples de descriptions de contenu en XPointer :

  • xmlns(m="http://.../.../MathML")xpointer(//m:math[2])
  • element(/1/2)
    retourne l’élément «em» sur le fragment de XML ci-dessous et est équivalente à la requête utilisant XPath suivante :

    xpointer(/child::*[position()=1]/child::*[position()=2])

3. Localisation

XPointer permet la localisation de parties XML (emplacements, lieux...) indépendamment des structures XML. Comme exemple d'utilisation, il peut servir à la localisation d'annotations après sélection (sur-lignage) par un utilisateur. Cela passe par la numérotation des noeuds et de points entre les noeuds et dans les textes. Par contre, il n’y a pas de localisation dans les espaces de noms et les attributs, car ils ne sont pas ordonnés.

La fonction permettant de repérer un emplacement dans un document XML est : «point(localisation)», qui pointe un emplacement dans le fichier XML. Dans l’exemple précédent, voici des exemples de points «①<p>②hello, <em>b③ig </em>④world.</p>» qui sont définis par :

A partir des emplacements, il est possible de définir des intervalles («range») qui sont des zones XML entre deux «points» : un point de départ (ou «start-point») et un point d'arrivée (ou «end-point»). Ainsi, il est possible de trouver les fonctions suivantes :

4. Conclusion

XPointer est un standard assez expressif, mais assez peu utilisé en dehors de XInclude par exemple. Ses applications possibles sont dans l'annotation de ressources ou dans la mise au point de bases de données XML réparties.