节点名称上的XPath通配符

时间:2010-11-17 09:36:40

标签: xml xslt xpath

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

/data/stats/*_cost

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

干杯: - )

4 个答案:

答案 0 :(得分:64)

这是正确的XPath 1.0表达式,它在任何命名空间中选择一个名称等于“_cost”的最后5个字符的元素。

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

答案 1 :(得分:6)

使用XPath 1.0,您可以使用/data/stats/*[substring-after(name(), '_cost') = '']模式。检查元素的名称是否以_cost后缀结尾。

在XPath 2.0中有fn:ends-with(str, str),相应的表达式为*[ends-with(name(), '_cost')]

答案 2 :(得分:6)

您也可以使用contains

例如

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

答案 3 :(得分:4)

以上对我不起作用。我不得不“稍微”修改如下:

/data/stats/*[contains(name(),'_cost')]