我无法使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
但我一直收到错误,我不确定我是不是写得不正确,或者说这不是正确的方法。
答案 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 Polishchuk中other answer发布的XPath。