Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MarkLogic 8和服务器端JavaScript-XPath序列查询_Javascript_Xpath_Xquery_Marklogic - Fatal编程技术网

MarkLogic 8和服务器端JavaScript-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") ); } 是否有计划提供此功能,或者有解决方法允许此

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

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")
这将为您提供“摘要”中的所有文章,而不管它们在什么文档中