Filtrage d'ensemble de noeuds (node-sets) par les prédicats

Les expressions XPath servent à sélectionner des nœuds à l'intérieur des arbres XML. Afin de pouvoir utiliser ces expressions lors d'opérations plus complexes, il est nécessaire de pouvoir filtrer de nouveau les résultats obtenus jusqu'ici , dans le but de définir la quantité exacte de nœuds voulus. Pour se faire, les expressions XPath peuvent contenir des prédicats. Les prédicats sont des expressions qui retournent une valeur booléenne ("true" ou "false") et qui définissent pour tous les nœuds sélectionnés un nouveau filtre. Lorsqu'un nœud appartenant à un node-set correspond à l'expression d'un prédicat (ce qui signifie que la condition est vraie), celui-ci reste dans le résultat. Si au contraire la valeur d'un nœud est fausse, ce dernier sera retiré du node-set. Le but est toujours d'affiner (de limiter) un ensemble de nœuds.   

Filtrage d'ensemble de noeuds

L'expression //adresse sélectionne tous les nœuds d'élément "adresse" du document. Dans un deuxième temps, notamment grâce à l'application d'un prédicat à l'ensemble de nœuds sélectionnés, celui-ci sera réduit. Ne resteront dans l'ensemble de nœuds que les éléments qui remplissent la condition suivante, c'est-à-dire que l'élément enfant "lieu" ait la valeur "Stuttgart". Tous les autres éléments seront exclus.

Mise à part la comparaison string, l'expression dans un prédicat peut exprimer d'autres comparaison de valeurs. Par exemple:

Comparaison string pure adresse[nom="Willy Winzig"]
Comparaison numérique (plus grand) Album[@estimation > 3]
Comparaison numérique (plus petit ou égal)  //Chanson[@annee <= 1990]
Combinaison de "plus grand" et "inégal" Album[@estimation < 2]/Chanson[@annee != 2000]

En plus de pouvoir comparer des valeurs, on peut vérifier dans un node-set la coexistence d'autres éléments.

/listeAdresse[adresse] Vérification de l'existence d'un élément enfant "adresse"
/listeAdresse/adresse[@cat] Vérification de l'existence d'un attribut "cat" à l'intérieur de "adresse"

Avertissement: Un prédicat ne vérifie que ce qui est vrai ou faux. Conversion implicite en booléen.

<< précédent suivant >>

Copyright © dpunkt.verlag GmbH 2007
Vous pouvez imprimer cette version en ligne pour un usage privé. Par ailleurs, ce chapitre du livre "Professionelle XML-Verarbeitung mit Word" est soumis aux mêmes clauses prévues pour la version papier: L'intégralité de l'oeuvre est protégée par les droits d'auteurs. Tous droits réservés y compris la copie, la traduction, la reproduction sur microfilm, tout comme l'enregistrement et le traitement dans des systèmes électroniques.

dpunkt.verlag GmbH, Ringstraße 19B, 69115 Heidelberg, téléphone +49 (0)6221-14830, fax +49 (0)6221-148399, hallo(at)dpunkt.de