XPath

XPath

XPath est un langage (non XML) 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.

Sommaire

Syntaxe et sémantique

Une expression XPath est un chemin de localisation, constitué de pas de localisation. Les pas de localisation sont séparés par le caractère « / ». Un chemin ressemble ainsi au chemin dans un système de fichiers.

Les pas de localisation ont chacun trois composants :

  1. un axe ;
  2. un test de nœud ;
  3. des prédicats.

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 utilsées sont : sum(), count() et les opérateurs arithmétiques. Les fonctions qui s'appliquent aux chaines les plus utilisées sont : subtring(), string-length(), concat().

Exemples

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>

alors les expressions XPath suivantes

Expression XPath Résultat
/ sélectionne un nœud "fictif", dit root element, qui englobe tout le document sauf <?xml version="1.0"?>
/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 :

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.

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

Évolutions

La syntaxe XPath a évolué pour devenir plus complète. La norme XPath 2, recommandation W3C depuis le 23 janvier 2007 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.

Voir aussi

Articles connexes

Liens externes


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article XPath de Wikipédia en français (auteurs)

Игры ⚽ Нужен реферат?

Regardez d'autres dictionnaires:

  • XPath 1.0 — XPath (XML Path Language) is a language for selecting nodes from an XML document. In addition, XPath may be used to compute values (strings, numbers, or boolean values) from the content of an XML document. The current version of the language is… …   Wikipedia

  • XPath 2.0 — is the current version of the XPath language defined by the World Wide Web Consortium, W3C. It became a recommendation on 23 January 2007.XPath is used primarily for selecting parts of an XML document. For this purpose the XML document is… …   Wikipedia

  • XPath — (XML Path Language) es un lenguaje que permite construir expresiones que recorren y procesan un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y… …   Wikipedia Español

  • Xpath — (XML Path Language) язык запросов к элементам XSLT, и является стандартом консорциума W3C. В XPath используется компактный синтаксис, отличный от принятого в XML. В 2007 году завершилась разработка версии 2.0, которая теперь является составной… …   Википедия

  • XPath — es un lenguaje (basado en XML) que permite seleccionar subconjuntos de un documento XML. La idea es parecida a las expresiones regulares para seleccionar partes de un texto sin atributos (plain text). XPath permite buscar y seleccionar teniendo… …   Enciclopedia Universal

  • XPath — Die XML Path Language (XPath) ist eine vom W3 Konsortium entwickelte Abfragesprache, um Teile eines XML Dokumentes zu adressieren. XPath dient als Grundlage einer Reihe weiterer Standards wie XSLT, XPointer und XQuery. Seit ihrer Verabschiedung… …   Deutsch Wikipedia

  • XPATH — Die XML Path Language (XPath) ist eine vom W3 Konsortium entwickelte Abfragesprache, um Teile eines XML Dokumentes zu adressieren. XPath dient als Grundlage einer Reihe weiterer Standards wie XSLT, XPointer und XQuery. Seit ihrer Verabschiedung… …   Deutsch Wikipedia

  • XPath — Infobox programming language name = XPath paradigm = query language year = 1999 designer = developer = W3C latest release version = 2.0 latest release date = January 23 2007 typing = implementations = JavaScript, C#, Java dialects = influenced by …   Wikipedia

  • XPath — Эта статья или раздел нуждается в переработке. Пожалуйста, улучшите статью в соответствии с правилами написания статей. XPath (XML Path Language)  я …   Википедия

  • Xpath data model — XPath is a language for selecting portions of an XML Document (sequences of nodes of an XML tree). XPath uses a specific conceptual interpretation XML documents, referred to as the XPath Data Model. Technical documents on XML often uses the same… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”