XPath wildcards on node name

Ben Everard picture Ben Everard · Nov 17, 2010 · Viewed 84.6k times · Source

I want to grab a node from my XML file, the node has a prefix such as "latest_", but this may change and I'm keen for my XSLT to be as fluid as possible. Here's the XPath I want to use:

/data/stats/*_cost

This should match latest_cost, newest_cost, anything_cost, is there a way of doing this?

Cheers :-)

Answer

user357812 picture user357812 · Nov 17, 2010

This is the correct XPath 1.0 expression which selects an element with the last 5 character of name equal to "_cost" in any namespace.

/data/stats/*[substring(name(), string-length(name()) - 4) = '_cost']