Étant donné un document XML comme celui-ci:Vérification du contenu du nœud contre un ensemble de valeurs
<root>
<foo>
<bar>a</bar>
<bar>b</bar>
<bar>c</bar>
</foo>
...
</root>
Comment puis-je récupérer tous les foo
-nodes qui ont bar
-subnodes avec certaines valeurs?
Ainsi par exemple, si je dois tous foo
-elements qui ont bar
-subelements avec des valeurs a
et c
, je suis actuellement en utilisant cette expression:
//*/foo[bar/text()='a'][bar/text()='c']
ce qui est bien, sauf qu'il obtient maladroit si J'ai plus de "bar
-constraints" et je ne suis pas trop grand d'un fan d'expressions XPath générées par programme :). Ce que je cherche est quelque chose le long de ces lignes (syntaxe évidemment invalide):
//*/foo[bar/text() in-set('a', 'c')]
Des idées?
Bon, mais ça ne m'aide pas vraiment. Je devrais encore créer par programmation cette séquence qui, avec suffisamment de contraintes, peut être assez longue. Au lieu de cela, je préfèrerais simplement créer la chaîne ''a '', 'b', 'c' et ne pas toucher l'expression XPath elle-même. – n3rd