Link Search Menu Expand Document

XPath - Introduction à l’API

Dans les chapitres précédents, nous avons étudié l’une des technologies permettant d’exploiter les informations présentes dans un document XML : l’API DOM. Comme je vous le disais précédemment, dans cette troisième partie du cours, 2 technologies seront abordées. Il nous en reste donc une à voir : XPath.

Cette technologie qui repose sur l’écriture d’expressions va nous permettre d’extraire de manière très précise les informations contenues dans un document XML.

Ce premier chapitre sera l’occasion de faire connaissance avec XPath en revenant principalement sur le vocabulaire à connaître pour la manipuler.

Qu’est-ce que l’API XPath ?

La petite histoire de XPath

XPath est une technologie qui permet d’extraire des informations (éléments, attributs, commentaires, etc…) d’un document XML via l’écriture d’expressions dont la syntaxe rappelle les expressions rationnelles utilisées dans d’autres langages.

Tout comme DOM, XPath est un standard du W3C et ce depuis sa première version en 1999. Au moment où j’écris ces lignes, la technologie en est à sa deuxième version.

Si XPath n’est pas un langage de programmation en soit, cette technologie fournit tout un vocabulaire pour écrire des expressions permettant d’accéder directement aux informations souhaitées sans avoir à parcourir tout l’arbre XML.

Un peu de vocabulaire

Avant d’étudier de manière plus approfondie comment écrire des expressions XPaths, il convient de revenir sur quelques notions de vocabulaire qui seront indispensables pour bien comprendre la suite du cours.

Pour ce faire, je vous propose de reprendre un document XML que nous avons déjà vu plusieurs fois dans ce cours et l’utiliser pour illustrer les notions que nous allons voir :

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<repertoire>
  <!-- John DOE -->
  <personne sexe="masculin">
    <nom>DOE</nom>
    <prenom>John</prenom>
    <telephones>
      <telephone type="fixe">01 02 03 04 05</telephone>
      <telephone type="portable">06 07 08 09 10</telephone>
    </telephones>
  </personne>
</repertoire>

Reprenons également une illustration de son arbre :

Voici à la figure suivante ce à quoi ressemble l’arbre une fois modélisé.

Arbre XML d'un document XML

Pour rappel, voici la légende :

Légende de l'arbre XML

Parent

Le parent d’un nœud est le nœud qui est directement au dessus de lui d’un point de vue hiérarchique. Chaque nœud a au moins un parent.

Par exemple, le nœud repertoire est le parent du nœud personne qui est lui même le parent des nœuds nom, prenom et telephones.

Enfant

Un nœud a pour enfants tous les nœuds situés un niveau en dessous dans la hiérarchie. Un nœud peut donc avoir une infinité d’enfants.

Par exemple, le nœud repertoire a pour enfant le nœud personne qui a lui même plusieurs enfants : les nœuds nom, prenom et telephones.

Descendant

Un nœud a pour descendants tous les nœuds situés en dessous dans la hiérarchie. Un nœud peut donc avoir une infinité de descendants.

Par exemple, le nœud repertoire a pour descendants les nœuds personne, nom, prenom et telephones.

Ancêtre

Un nœud a pour ancêtres tous les nœuds situés en dessus dans la hiérarchie. Un nœud peut donc avoir plusieurs ancêtres.

Par exemple, le nœud telephones a pour ancêtres les nœuds personne et repertoire.

Frère

Un nœud a pour frères tous les nœuds situés au même niveau dans la hiérarchie. Un nœud peut donc avoir une infinité de frères.

Par exemple, le nœud nom a pour frères les nœuds prenom et telephones.

Chemin relatif et chemin absolu

Vous l’aurez compris avec le chapitre précédent, XPath est une technologie qui permet d’extraire des informations d’un document XML via l’écriture d’expressions. Concrètement, ces expressions consistent à décrire le chemin emprunté dans l’arbre XML pour atteindre les données qui nous intéressent.

Reprenons le schéma utilisé jusqu’ici pour illustrer le principe :

Arbre XML d'un document XML

Si je veux récupérer par exemple le numéro de téléphone fixe, voici le chemin à parcourir :

  • Étape 1 : nœud repertoire.
  • Étape 2 : descendre au nœud enfant personne.
  • Étape 3 : descendre au nœud enfant telephones.
  • Étape 4 : descendre au nœud enfant telephone dont l’attribut est fixe.

Sans rentrer dans les détails, l’expression XPath correspondante ressemblera à quelque chose comme ça :

/étape1/étape2/étape3/étape4

Si le principe est toujours le même, il est possible d’exprimer vos chemins de 2 manières :

  • Un chemin relatif.
  • Un chemin absolu.

Les chemins absolus

Le chemin absolu est le type de chemin que nous avons utilisé dans notre exemple. Le nœud de départ est toujours la racine de l’arbre XML.

Une expression XPath utilisant un chemin absolu est facilement identifiable car elle commence par le caractère ”/”.

Bien que nous ayons déjà vu un exemple, je vous propose d’illustrer cette définition par un nouvel exemple dans lequel nous allons récupérer le prénom de la personne décrite dans notre arbre XML :

  • Étape 1 : nœud repertoire.
  • Étape 2 : descendre au nœud enfant personne.
  • Étape 3 : descendre au nœud enfant prenom.

L’expression XPath correspondante ressemblera alors à ça :

/étape1/étape2/étape3

Les chemins relatifs

Si un chemin absolu est un chemin dont le nœud de départ est toujours la racine de l’arbre XML, un chemin relatif accepte quant à lui n’importe quel nœud de l’arbre XML comme point de départ.

Une expression XPath utilisant un chemin relatif est facilement identifiable car elle ne commence pas par le caractère ”/”.

Comme pour les chemins absolus, je vous propose d’illustrer cette nouvelle définition par un exemple dans lequel nous allons récupérer le prénom de la personne. Dans cet exemple, notre point de départ sera le nœud décrivant le numéro de téléphone portable de John DOE :

  • Étape 1 : nœud telephone dont l’attribut est portable.
  • Étape 2 : remonter au nœud parent telephones.
  • Étape 3 : aller nœud frère prenom.

L’expression XPath correspondante ressemblera alors à ça :

étape1/étape2/étape3

En résumé

  • XPath est une technologie qui permet d’extraire des informations d’un document XML via l’écriture d’expressions.
  • Parent, enfant, descendant, ancêtre et frère sont des notions importantes à comprendre afin de manipuler XPath.
  • Les expressions XPath peuvent être écrites à l’aide d’un chemin relatif ou absolu.

Ce cours vous plait ?

Retrouvez ce cours en livre physique sur Amazon !