是否可以使用 cts:uris()
搜索其文档包含特定 XPath 的 uri?我认为它可能比从 cts:search 返回 uri 更快。这是我目前拥有的:
declare function local:xpath-search($collection) {
for $i in cts:search(//a/b, cts:and-query((cts:collection-query($collection)) ))[1] return fn:base-uri($i)
} ;
是否有一种更快的方法可以使用 cts:uris()
返回包含与 XPath //a/b
匹配的文档?
最佳答案
您可以使用cts:element-query()构造一个 cts:query,其功能类似于 XPath 表达式 //a/b
搜索包含 a
元素且包含 b
元素的文档后人。它并不完全相同,并且可能会给您一些误报,因为它实际上更类似于 //a//b
,但可能是可以接受的并且可以与 cts 一起使用:uris()
.
xquery version "1.0-ml";
declare function local:xpath-search($collection) {
cts:uris("", (),
cts:and-query((
cts:collection-query($collection),
cts:element-query(xs:QName("a"),
cts:element-query(xs:QName("b"), cts:and-query(()) ) ) )) )
};
关于xpath - MarkLogic:如何使用 cts:uris 搜索 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38188480/