需要XPath结束 - 具有功能

时间:2016-02-15 00:36:53

标签: xml xpath xmllint

我无法使XPath功能正常工作。我应该只提取XML文件中的条目,它们的名称以字母'z'结尾,我无法使其工作。我是xmllint用cat命令操作文件。

ends-with()仅适用于XPath 2.0,我很确定服务器只有XPath 1.0,所以我尝试输入这个命令:

cat //country/city[substring(@name, string-length(@name) - string-length('z') +1)]/name

但我一直收到错误,我不确定我是不是写得不正确,或者说这不是正确的方法。

2 个答案:

答案 0 :(得分:3)

这应该有效:

//country[substring(@name, string-length(@name)) = 'z']

答案 1 :(得分:2)

您的XPath缺少检查substring()的返回值的步骤,无论它是否等于预期的字符串结束值"z"。所以正确的XPath将是:

//country[substring(@name, string-length(@name) - string-length('z') +1) = 'z']/@name

由于-string-length('z') +1等于0,因此可以省略该部分以获得更简单的XPath,类似于@Kirill Polishchukother answer发布的XPath。