如果我有一个上下文节点,一个XPath表达式和一个节点,有没有办法检查我的节点是否满足该上下文中的XPath表达式。
我有非常昂贵且运行时间长的XPath查询。在这里,我只想获取一个潜在的结果节点并检查它是否满足查询,即它将作为查询结果集的一部分返回。
我正在使用Saxon EE 9.3
答案 0 :(得分:0)
如果你的上下文节点是$ N,你的表达式是E,并且正在测试的节点是$ T,那么表达式boolean($N/(EXP) intersect $T)
会在你的问题的第一部分做你要求的。但是,它可能不符合问题第二部分所暗示的要求,即计算应该比评估EXP更快。
如果表达式EXP采用XSLT模式的形式,那么答案是肯定的,有一种方法可能会更快(尽管如何实现这一点取决于您使用的Saxon API)。请注意,当EXP是模式时,$ T是否与模式匹配的问题不依赖于知道上下文节点$ N.