MarkLogic 8和服务器端JavaScript-XPath序列查询
在XQuery中,您可以非常高效地对返回序列的API函数执行XPath查询:MarkLogic 8和服务器端JavaScript-XPath序列查询,javascript,xpath,xquery,marklogic,Javascript,Xpath,Xquery,Marklogic,在XQuery中,您可以非常高效地对返回序列的API函数执行XPath查询: fn:collection("abstract")//author 但是,这似乎是不可能的。您可以在循环中迭代该序列,并对单个文档执行XPath查询,但效率不高: var authors = []; for ( var doc of fn.collection("abstract")){ authors.push( doc.xpath("//author") ); } 是否有计划提供此功能,或者有解决方法允许此
fn:collection("abstract")//author
但是,这似乎是不可能的。您可以在循环中迭代该序列,并对单个文档执行XPath查询,但效率不高:
var authors = [];
for ( var doc of fn.collection("abstract")){
authors.push( doc.xpath("//author") );
}
是否有计划提供此功能,或者有解决方法允许此功能?您可以使用toArray()函数从ValueIterator获取数组,如下所示:
fn.collection("abstract").toArray();
有关更多信息,请参阅:
希望这会有所帮助,当然,我们希望在前进的过程中改进Javascript API,但总体而言,Javascript与JSON的结合效果更好,XQuery与XML的结合效果更好:这并不奇怪,因为语言的设计都考虑到了这些数据格式 对于特定的情况,您还可以使用DOM API:
doc.getElementsByTagName(“作者”)
。它的开销将比xpath调用少一点。要知道的另一件事是,您可以提供完整的XPath作为XPath的参数,例如
anydoc.xpath("collection('abstract')//author")
这将为您提供“摘要”中的所有文章,而不管它们在什么文档中