在XQuery中,您可以非常有效地在返回序列的API函数上执行XPath查询:
fn:collection("abstract")//author
使用server-side JavaScript,这似乎不可能。您可以在循环中迭代序列,并对单个文档执行XPath查询,但它不是非常有效:
var authors = [];
for ( var doc of fn.collection("abstract")){
authors.push( doc.xpath("//author") );
}
是否有计划提供此设施,或允许它的解决方法?
答案 0 :(得分:3)
当然,我们希望随时改进Javascript API,但一般情况下Javascript与JSON的结合效果更好,XQuery可以更好地与XML协同工作:这并不奇怪,因为每种语言都考虑到了这些数据格式。
对于特定情况,您还可以使用DOM API:doc.getElementsByTagName("author")
。它的开销比xpath调用少一点。另一件要知道的是,您可以将完整的XPath作为xpath的参数,例如
anydoc.xpath("collection('abstract')//author")
这将为您提供所有“抽象”的文章,无论它们在哪个文档中。
答案 1 :(得分:0)
您可以使用toArray()函数从ValueIterator获取数组,如:
fn.collection("abstract").toArray();
有关更多信息,请参阅:
http://docs.marklogic.com/guide/jsref/api#id_90070
希望有帮助,