我学习 XPath 越多,我就越需要反向引用
例如,当我在一些中间步骤中发现一些信息时,有时我需要稍后使用这些信息。这个问题实际上有一个解决方法,在谓词表达式的能力的帮助下也包含 XPathes。工作解决方案可能看起来像这样
/foo/item[@attrtocheck = ../../otheritem[@anotherattr]]
但是这种方法的问题是我只是根据某些标准评估谓词,并且不能基于此获得多个后续结果。即使有许多具有相同@anotherattr 的其他项目,我也无法收集它们。所以更好的解决方案是
/foo/item[@attrtocheck]/../../otheritem[@anotherattr=BACKREFERENCING_ATTRTOCHECK_VALUE]
但只要我知道这是不可能的。
如果标准中没有解决方案,也许某些工具/库中有扩展?实际上我实现了自己的引擎,如果已经存在非标准语法,我会采用它。
更新:迈克尔凯评论后,更多关于我为什么错过这个功能
实际上,我正在为 AST(抽象语法树)执行 XPath 搜索。我不是第一个尝试这样做的人(网络搜索 [Xpath AST])。这种搜索揭示了树的不同部分之间非常紧密的关系。例如,当我在某个上下文中(例如在某个其他方法中)找到一些调用时,我想知道这个符号是否作为虚函数引入,如果它是然后将其输出到结果中。在这种情况下,我的第一次搜索会产生一些以前未知的符号(函数名),我想在以下子路径中使用它(搜索类声明及其关键字)。因此,反向引用将非常有帮助。
我认为如果它适用于 AST,那么在其他结构化数据中就有可能存在这种关系。