считать элемент с помощью Xquery и возвращать как имя элемента, так и значение - PullRequest
0 голосов
/ 25 марта 2019

Я должен посчитать, сколько раз авторы показывают в файле XML.Допустим, в приложении - XML

Фрэнк Манола появился 2 раза, а Толга Юрек появился 1 раз.

Мой результат желаний:

Фрэнк Манола, 2
Толга Юрек, 1

Я использовал этот код, но не могу заархивировать его:

за $ a в документе ("dblp.xml ") / dblp / * let $ c: = count ($ a / author) return ($ a / author, $ c)

Результат очень странный, как этот: нежелательный результат

Какая ошибка в моем коде?Что я могу сгруппировать и суммировать?

Ответы [ 2 ]

1 голос
/ 25 марта 2019

В 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

1 голос
/ 25 марта 2019

Вы повторяете несколько раз одного и того же автора. Может быть, вы должны использовать Different-значения при цикле на авторов?

Что-то вроде:

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