XPathXPath
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émantiqueUne expression XPath est un chemin de localisation, constitué de pas de localisation (appelés également en français étapes[1]). Les pas de localisation sont séparés par le caractère « / ». Les pas de localisation ont chacun trois composants :
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, 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 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 1Considé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>
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 :
Le résultat de ces sélections dépendra de la nature de la tâche :
ÉvolutionsLa 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>
UtilisationsXPath 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 est intégré à certaines bibliothèques de scraping ou de manipulation html et/ou XML tel Parsel[3] ou lxml[4]. 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 :
Autre exemple, avec xfind pour chercher des fichiers (XML servant à modéliser les attributs du fichier) :
Voir aussiArticles connexesLiens externes
Références
|