我必须计算一个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
我的代码有什么错误?我可以对它们进行分组和总结吗?
答案 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)