Je veux récupérer un nœud de mon fichier XML, le nœud a un préfixe tel que "latest_", mais cela peut changer et je souhaite que mon XSLT soit aussi fluide que possible. Voici le XPath que je veux utiliser:
/data/stats/*_cost
Cela devrait correspondre à latest_cost
, newest_cost
, anything_cost
, Y-a-t'il une façon de le faire?
À votre santé :-)
Il s'agit de l'expression XPath 1.0 correcte qui sélectionne un élément avec les 5 derniers caractères du nom égal à "_cost" dans n'importe quel espace de noms.
/data/stats/*[substring(name(), string-length(name()) - 4) = '_cost']
Vous pouvez également utiliser contains
par exemple
/data/stats[contains(.,'_cost')]
Avec XPath 1.0, vous pouvez utiliser le modèle /data/stats/*[substring-after(name(), '_cost') = '']
. Cela vérifie si le nom de l'élément se termine par le suffixe _cost
.
Dans XPath 2.0, il y a fn:ends-with(str, str)
et votre expression correspondante sera *[ends-with(name(), '_cost')]
.
Ce qui précède n'a pas fonctionné pour moi. J'ai dû "légèrement" modifier cela comme suit:
/data/stats/*[contains(name(),'_cost')]