AccueilđŸ‡«đŸ‡·Chercher

XPath

XPath est un langage de requĂȘte pour localiser une portion d'un document XML. Initialement crĂ©Ă© pour fournir une syntaxe et une sĂ©mantique aux fonctions communes Ă  XPointer et XSL, XPath a rapidement Ă©tĂ© adoptĂ© par les dĂ©veloppeurs comme langage d'interrogation simple d'emploi.

Syntaxe et sémantique

Une expression XPath est un chemin de localisation, constitué de pas de localisation (appelés également en français étapes[2]). Les pas de localisation sont séparés par le caractÚre « / ».

Les pas de localisation ont chacun trois composants :

  1. un axe (parent, descendant
) ;
  2. un test de nƓud (nom ou fonction dĂ©signant les nƓuds) ;
  3. des prédicats (entre crochets).

L'axe indique la direction dans laquelle se dĂ©placer dans l'arbre XML, relativement au nƓud courant ou depuis la racine. Par exemple, child:: sĂ©lectionnera les nƓuds enfants du nƓud courant. Dans XPath, quand l'axe n'est pas prĂ©cisĂ©, il s'agit implicitement de l'axe des enfants (child::). Un autre axe largement utilisĂ© est celui des attributs, reprĂ©sentĂ© avec le caractĂšre arobase (@). Il existe en tout 13 axes qui permettent d'exprimer des relations gĂ©nĂ©alogiques, ou qui considĂšrent l'ordre de lecture du document.

Le test de nƓud permet de sĂ©lectionner ou non les nƓuds en fonction de leur nom ou de leur type. Par exemple le test text() sĂ©lectionnera tous les nƓuds de type texte (dans l'axe considĂ©rĂ©).

Les prĂ©dicats sont des expressions plus complexes ; ils sont utilisĂ©s pour filtrer les nƓuds sĂ©lectionnĂ©s par l'axe et le test de nƓud. Les prĂ©dicats sont Ă©crits entre crochets (« [ », « ] »). Si le prĂ©dicat est Ă©valuĂ© Ă  vrai, les nƓuds correspondants seront sĂ©lectionnĂ©s.

XPath offre ainsi une recherche sĂ©quentielle par nƓuds. Le rĂ©sultat de l'Ă©valuation d'une expression XPath est une sĂ©quence contenant des nƓuds et des valeurs atomiques (textes, boolĂ©ens
).

En fonction de la nature (nombre, boolĂ©en, texte) des valeurs sĂ©lectionnĂ©es, XPath offre un certain nombre de fonctions. Ces fonctions sont limitĂ©es car elles sont plus destinĂ©es Ă  ĂȘtre utilisĂ©es dans les prĂ©dicats que pour effectuer un traitement sur les donnĂ©es sĂ©lectionnĂ©es.

Les fonctions qui s'appliquent aux nombres les plus utilisées sont : sum(), count() et les opérateurs arithmétiques. Les fonctions qui s'appliquent aux chaines les plus utilisées sont : substring(), string-length(), concat().

Exemples XPath 1

Exemple XPath montrant les nƓuds sĂ©lectionnĂ©s dans le document XML

Considérons le document XML suivant :

 <?xml version="1.0"?>
 <racine>
  <encyclopedie nom="Wikipedia" site="http://fr.wikipedia.org/">
   <article nom="XPath">   
    <auteurs>
     <auteur>
      <nom>Dupont</nom>
     </auteur>
     <auteur>
      <nom>Dubois</nom>
     </auteur>
    </auteurs>
   </article>
  </encyclopedie>
 </racine>
Exemples de requĂȘtes absolues
Expression XPath RĂ©sultat
/ sĂ©lectionne un nƓud "fictif", dit root element, qui englobe tout le document, y compris le doctype <?xml version="1.0"?>[3]
/root sĂ©lectionne le nƓud vide, puisqu'il n'y a pas d'Ă©lĂ©ment "root" (mais "racine")
//article sĂ©lectionne tous les Ă©lĂ©ments "article" du document oĂč qu'ils soient
/racine/encyclopedie sélectionne l'unique élément "encyclopedie" puisqu'il est ici le seul fils de "racine" portant ce nom
//article[@nom='XPath'] sĂ©lectionne tous les Ă©lĂ©ments "article" du document oĂč qu'ils soient, ayant un attribut "nom" dont la valeur est "XPath"

Toutes ces expressions XPath sont absolues (elles commencent par un caractĂšre "/"), c'est-Ă -dire qu'elles donnent le mĂȘme rĂ©sultat quel que soit le contexte. Les expressions suivantes sont relatives. Si le contexte courant est l'unique Ă©lĂ©ment "encyclopedie", elles donnent :

Exemples de requĂȘtes relatives
dans le contexte de l’élĂ©ment encyclopedie
Expression XPath RĂ©sultat
article sélectionne l'élément "article"
racine ne sélectionne rien, vu le contexte
article[1]/auteurs/auteur[2] sélectionne le second auteur (Dubois) du premier article
article[ count(article/auteurs/auteur) >1 ] sélectionne les articles qui ont au moins 2 auteurs
../racine sélectionne l'élément "racine", puisqu'il est parent de l'élément courant

Le résultat de ces sélections dépendra de la nature de la tùche :

  • En affichage, ce sera la valeur textuelle, propre Ă  chaque type d'Ă©lĂ©ment, qui apparaĂźtra. Si plusieurs nƓuds sont sĂ©lectionnĂ©s, comme pour //article, seul le premier est concernĂ©.
  • En sĂ©lection, il se comportera comme un pointeur sur lequel d'autres requĂȘtes XPath pourront ĂȘtre effectuĂ©es.

Évolutions

La syntaxe XPath a Ă©voluĂ© pour devenir plus complĂšte. La norme XPath 2.0 (en), recommandation W3C depuis le , dĂ©crit un sous-ensemble commun aux langages XSLT 2.0 et XQuery 1.0, constituant Ă©galement un langage de requĂȘte XML autonome beaucoup plus riche que la premiĂšre version incluse dans XSLT 1.

Exemples XPath 2

<?xml version="1.0" encoding="utf-8"?>
<wikimedia>
  <projects>
    <project name="Wikipedia" launch="2001-01-05">
      <editions>
        <edition language="English">en.wikipedia.org</edition>
        <edition language="German">de.wikipedia.org</edition>
        <edition language="French">fr.wikipedia.org</edition>
        <edition language="Polish">pl.wikipedia.org</edition>
        <edition language="Spanish">es.wikipedia.org</edition>
      </editions>
    </project>
    <project name="Wiktionary" launch="2002-12-12">
      <editions>
        <edition language="English">en.wiktionary.org</edition>
        <edition language="French">fr.wiktionary.org</edition>
        <edition language="Vietnamese">vi.wiktionary.org</edition>
        <edition language="Turkish">tr.wiktionary.org</edition>
        <edition language="Spanish">es.wiktionary.org</edition>
      </editions>
    </project>
  </projects>
</wikimedia>

Utilisations

XPath est le langage de requĂȘte Ă©lĂ©mentaire dans XSLT. Il dĂ©termine si une rĂšgle template s'applique (via son attribut match), et peut aussi servir Ă  extraire des contenus du document XML transformĂ© par le programme XSLT.

XPath peut ĂȘtre utilisĂ© comme langage de requĂȘte dans les bases de donnĂ©es XML, souvent en tant que sous-ensemble de XQuery.

XPath est utilisé comme langage d'expression des rÚgles dans Schematron, et partiellement aussi dans XML Schema.

XPath peut ĂȘtre utilisĂ© depuis la ligne de commande, ici avec la commande xpath qui vient du module Perl XML::XPath. Ici, on cherche les URL des articles dans un flux de syndication Atom :

$ xpath -e '//link[@rel="alternate"]/@href' feed.atom

Autre exemple, avec xfind pour chercher des fichiers (XML servant à modéliser les attributs du fichier) :

$ ./find -xpath '/bin/*[@size > /bin/bash/@size]' /bin/ipv6calc /bin/rpm

Voir aussi

Articles connexes

Liens externes

Références

  1. « https://www.w3.org/TR/xpath-31/ »
  2. Voir le terme étape dans la traduction française de la recommandation XPath
  3. http://www.xpathtester.com/
Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.