【发布时间】:2016-02-22 00:15:00
【问题描述】:
我有一些想要执行 xquery 操作的 xml 文档。通过返回与查询匹配的节点,xmllint 似乎几乎可以满足我的要求。这对我没有帮助,因为这个节点可能存在很多地方,我不知道匹配在哪里。
一个非常简单的例子是 xmllint -xpath '//shutdown[text()="false"]' 返回:<shutdown>false</shutdown><shutdown>false</shutdown><shutdown>false</shutdown><shutdown>false</shutdown><shutdown>false</shutdown>。
这告诉我有匹配的节点,但不告诉我哪些节点。有什么方法可以获取返回节点的实际 xpath 吗?我什么都没找到。
虽然给出的示例也可以在编辑器中对 xml 文档进行 greping 操作,但这种方法对于更复杂的查询是不可能的。
【问题讨论】:
-
fn:path()(w3.org/TR/xpath-functions-30/#func-path) 是您正在寻找的。但是,这是 XQuery 3.0,我认为 xmllint 不支持它。如果您不必使用此工具,BaseX 和 eXist 是两个开源 XQuery 3.0 处理器。basex -q '//shutdown[text()="false"]/path()'做什么工作。 -
谢谢,我会调查这些组件。