节点名称上的XPath通配符

我想从我的XML文件中获取一个节点,该节点有一个前缀,如“latest_”,但这可能会改变,我渴望我的XSLT尽可能stream畅。 这是我想要使用的XPath:

/data/stats/*_cost 

这应该匹配latest_costnewest_costanything_cost ,有没有办法做到这一点?

干杯:-)

这是正确的XPath 1.0expression式,select一个名称最后5个字符等于“_cost”的任何名称空间的元素。

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

使用XPath 1.0,你可以使用/data/stats/*[substring-after(name(), '_cost') = '']模式。 这检查元素的名称是否以_cost后缀结尾。 在XPath 2.0中有fn:ends-with(str, str) ,相应的experssion将会是*[ends-with(name(), '_cost')]

你也可以使用contains

例如

 /data/stats[contains(.,'_cost')]