コンテキスト ノード、XPath 式、およびノードがある場合、ノードがそのコンテキストで XPath 式を満たすかどうかを確認する方法はありますか。
非常にコストがかかり、実行に時間がかかる XPath クエリがあります。ここでは単純に潜在的な結果ノードを取得し、それがクエリを満たすかどうか、つまり、クエリ結果セットの一部として返されるかどうかを確認したいと思います。
私はSaxon EE 9.3を使用しています
コンテキストノードが$N、式がE、テスト対象のノードが$ Tの場合、式boolean($N/(EXP) intersect $T)
は質問の最初の部分で求めていることを実行します。ただし、質問の2番目の部分で示されている要件を満たしていない可能性があります。つまり、計算はEXPの評価よりも高速である必要があります。
式EXPがXSLTパターンの形式をとる場合、答えは「はい」です。方法があり、より高速になる可能性があります(ただし、これを実現する方法は、使用しているSaxon APIによって異なります)。EXPがパターンである場合、$ Tがパターンと一致するかどうかの問題は、コンテキストノード$Nを知ることに依存しないことに注意してください。