繁体   English   中英

MarkLogic 8和服务器端JavaScript-序列上的XPath查询

[英]MarkLogic 8 and server-side JavaScript - XPath Queries on Sequences

在XQuery中,您可以非常有效地对返回序列的API函数执行XPath查询:

fn:collection("abstract")//author

使用服务器端JavaScript似乎不可能。 您可以循环访问序列,并在各个文档上执行XPath查询,但是效率不高:

var authors = [];
for ( var doc of fn.collection("abstract")){
  authors.push( doc.xpath("//author") );
}

是否有任何计划提供此功能,或者有允许它的解决方法?

当然,我们希望不断改进Javascript API,但总的来说,Javascript与JSON更好地结合,XQuery与XML更好地结合:这并不奇怪,因为每种语言在设计时都考虑了这些数据格式。

对于特定的情况,您还可以使用DOM API: doc.getElementsByTagName("author") 它的开销将比xpath调用少。 要知道的另一件事是,您可以将完整的XPath作为xpath的参数,例如

anydoc.xpath("collection('abstract')//author")

这将为您提供“摘要”中的所有文章,无论它们在什么文档中。

您可以使用toArray()函数从ValueIterator获取数组,如下所示:

fn.collection("abstract").toArray();

有关更多信息,请参见:

http://docs.marklogic.com/guide/jsref/api#id_90070

希望能有所帮助,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM