使用Xquery计算元素并返回元素名称和值

时间:2019-03-25 10:00:36

标签: xml xquery

我必须计算一个XML文件中作者的展示次数。假设附上-XML

弗兰克·马诺拉(Frank Manola)出现2次,托尔加·尤里克(Tolga Yurek)出现1次。

我的愿望结果是:

弗兰克·马诺拉(Frank Manola),2
Tolga Yurek,1

我使用了以下代码,但无法将其存档:

以doc(“ dblp.xml”)/ dblp / *中的$ a为单位:$ count($ a / author)返回($ a / author,$ c)

结果变得很奇怪:unwanted result

我的代码有什么错误?我可以对它们进行分组和总结吗?

2 个答案:

答案 0 :(得分:1)

您正在同一位作者上进行多次迭代。遍历作者时,也许应该使用distinct-values?

类似的东西:

for $a in distinct-values(doc("file.xml")//author)
  let $c := count(//author[. = $a])
  return ($a, $c)

答案 1 :(得分:1)

在XQuery 3中,您可以使用group by https://www.w3.org/TR/xquery-31/#id-group-by

for $author in doc("dblp.xml")/dblp/*/author
group by $a := $author
return $a || ': ' || count($author)

https://xqueryfiddle.liberty-development.net/b4GWVe/1