xpath - MarkLogic:如何使用 cts:uris 搜索 XPath

标签 xpath marklogic cts-search

是否可以使用 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/

相关文章:

Xpath 找到一个没有特定文本的子元素的 div

php - XPath:获取具有恰好两列的表

json - 其余扩展不会转换 json

java - MarkLogic Java API 死锁检测

xquery - 移动到 cts :search 的位置

xquery - MarkLogic:将 cts:search 表达式绑定(bind)到变量

java - 当 XML 中有多个命名空间时,如何 getChildText() 具有命名空间的节点?

xpath - xpath根据元素部分匹配来拉节点

search - 转换 cts :search to search:search 的逻辑