2

是否可以使用 搜索其文档包含某个 XPath 的 uri cts:uris()?我认为这可能比从cts:search. 这是我目前拥有的:

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) 
} ;

有没有更快的方法来返回包含与 XPath 匹配的文档//a/b,使用cts:uris()

4

1 回答 1

2

您可以使用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(()) ) ) )) )
};
于 2016-07-04T18:30:21.410 回答