Dans ce fichier xml, je veux faire correspondre l'élément contenant 'match' (élément random2)
<root>
<random1>
<random2>match</random2>
<random3>nomatch</random3>
</random1>
</root>
ok, jusqu'ici j'ai:
//[re:test(.,'match','i')] (with re in the proper namespace)
cela retourne random2, random1 et root ... J'aimerais seulement obtenir "random2"
des idées?
Voulez-vous trouver des éléments qui contiennent "correspondance" ou égal "correspondance"?
Cela trouvera des éléments dont les nœuds de texte sont égaux à 'match' (ne correspond à aucun des éléments en raison des espaces de début et de fin dans random2
):
//*[text()='match']
Ceci trouvera tous les éléments dont les nœuds de texte sont "correspondants", après avoir supprimé les espaces de début et de fin (correspond à random2
):
//*/text()[normalize-space(.)='match']/parent::*
Tous les éléments contenant "match" seront trouvés dans la valeur du nœud de texte (correspond à random2
et random3
):
//*[contains(text(),'match')]
Cette/ XPATH 2.0 solution utilise la fonction matches () et un modèle regex qui recherche les nœuds de texte contenant 'match' et commençant au début de la chaîne (ie ^
) ou une limite de Word (ie \W
) et terminée à la fin de la chaîne (c.-à-d. $
) ou une limite de Word. Le troisième paramètre i
évalue le motif de regex insensible à la casse. (correspond à random2
)
//*[matches(text(),'(^|\W)match($|\W)','i')]
Essayer
//re:*[. ='match']