我正在编写一个库来生成复杂的 XQuery 表达式,这些表达式以来自两个不同名称空间的文档为目标。但是,当我生成查询时,我不知道我必须查询的每个元素的特定命名空间,所以我目前正在生成两种可能组合的析取:
//*[ns1:foo/ns1:bar = "一些条件" or ns2:foo/ns2:bar = "一些条件"]
有没有什么方法可以更好地生成这个表达式并且在性能方面更优化?
我发现的一种可能的解决方案是使用:
声明默认元素命名空间“*”
在这种情况下,我可以简单地生成:
//*[foo/bar = "一些条件"]
但看起来这可能会增加额外的性能开销,因为我无法枚举那里的两个可能的命名空间并使用通配符。