FAQ XMLConsultez toutes les FAQ

Nombre d'auteurs : 5, nombre de questions : 65, dernière mise à jour : 30 mars 2017 

 
OuvrirSommaireXPATH 1.0

XPath est un langage avec une syntaxe non XML, permettant d'adresser les différents noeuds ou groupes de noeuds particuliers d'un document XML. XPath voit le document XML comme un arbre de noeuds, qu'il permet de parcourir selon des axes (fils, parent, ancêtre, descendant, ...) et en en sélectionnant les noeuds par leur nom. Les expressions XPath permettent également de représenter des chaînes de caractères, des nombres et des booléens.
XPath est intensément utilisé par d'autres langages et technologies XML, tels que XSLT, les W3C XML Schema, XLink, XForms... Voir les tutoriels sur XPath

Créé le 15 avril 2006  par Erwy, GrandFather

XPath 2.0 est à ce jour seulement au stade de Candidate Recommendation.
Seules quelques implémentations expérimentales, plus ou moins complètes, existent. Parmi ces implémentations, SAXON est réputée être une des plus complètes.

Créé le 15 avril 2006  par Erwy, GrandFather

En XPath chercher à sélectionner un noeud qui n'existe pas n'est pas une erreur, le moteur de XPath se contente de renvoyer une liste vide.
XPath est sensible à la casse, vérifiez en conséquence l'écriture des balises dans votre expression, ou, peut-être, avez-vous utilisé des prédicats (conditions entre crochets) trop restrictifs ?

Créé le 11 avril 2006  par Erwy, GrandFather

On vérifie s'il n'y a pas de noeud "précédent" ayant la même valeur.
Exemple avec un tri sur le contenu d'une balise Id

 
Sélectionnez
//Id[not(preceding::Id = .)]

ATTENTION, cette solution est TRES coûteuse. La solution XSLT doit toujours lui être préférée quand elle est possible.

Mis à jour le 30 mai 2008  par Erwy, GrandFather

Le prédicat à préciser dans l'expression XPath sera différent selon le sens apporté au mot "vide".

Sélectionner tous les éléments my-element qui n'ont pas de noeuds textuels enfants
Sélectionnez

//my-element[not(text())]
Sélectionner tous les éléments my-element qui n'ont pas d'éléments fils
Sélectionnez

//my-element[not(*)]
Sélectionner tous les éléments my-element qui n'ont aucun noeud enfant d'aucune sorte
Sélectionnez

//my-element[not(node())]
Créé le 11 avril 2006  par Erwy, GrandFather

En utilisant la fonction translate: translate (chaîne, 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ')
Par exemple :
translate ('Rapide', 'abcdefghijklmnopqrstuvwxyz','ABCDEFGHIJKLMNOPQRSTUVWXYZ') renverra la chaîne "RAPIDE"

Créé le 11 avril 2006  par Erwy, GrandFather

translate() est une fonction XPath de remplacement de caractères par d'autres ; on peut également s'en servir pour supprimer des caractères en l'utilisant sans donner de caractères de remplacement aux caractères recherchés.
Exemple - suppression de la ponctuation :
translate ('Demain, dois-je continuer ?', '-,?', '') renverra la chaîne "Demain dois je continuer "

Créé le 11 avril 2006  par Erwy, GrandFather

current() est une fonction XSLT utilisable dans des expressions XPath, et elle doit être uniquement employée dans une feuille de style XSL.

Créé le 11 avril 2006  par Erwy, GrandFather
  • node() sélectionne tous types de noeuds, à savoir ceux de type élément (balises), les attributs, les noeuds textuels (contenu des balises également sélectionnable avec text()), les commentaires (sélectionnable également avec comment(), les instructions de traitement (également sélectionnable avec processing-instruction()) et le noeud racine (à différencier de l'élément racine)
  • * récupère seulement les types element ou attributs.

node() et * permettent tous deux de sélectionner les attributs, à condition qu'ils soient précédés par l'axe attribute

Voir également Un cours sur les types Xpath.

Créé le 11 avril 2006  par Erwy, GrandFather

Non, la seule fonction XPath de remplacement, translate(), ne permet de remplacer qu'un seul caractères à la fois. Pour obtenir ce résultat il faudra utiliser les fonctions substring-after() et substring-before().
Par exemple, pour remplacer "renard" par "chien" dans la chaîne "le renard a mangé les poules" :

 
Sélectionnez

concat(substring-before('le renard a mangé les poules','renard'), 'chien', substring-after('le renard a mangé les poules', 'renard'))
Créé le 11 avril 2006  par forum

Il suffit d'utiliser la fonction position() qui donne, dans la sélection en cours, la position de l'élément en lecture. /A/B[position()=2] sélectionne le deuxième fils de chacun des éléments A. /A/B[position()=2]/C[position()>1] sélectionne tous les fils C , sauf le premier, des deuxième fils de chacun des éléments A.

Créé le 25 novembre 2006  par Erwy

La fonction name(), mais aussi local-name() et namespace-uri () ne renvoie la valeur que du premier noeud sélectionné si plusieurs lui sont fournis en paramètre

Créé le 25 novembre 2006  par Erwy
  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.