#xml #xquery
Вопрос:
Я новичок в xquery и пытаюсь подсчитать количество альбомов, которые есть у каждого музыканта.
Мои данные следующие:
lt;musiciansgt; lt;musician type="band"gt; lt;namegt;If These Trees Could Talklt;/namegt; lt;genregt;Post-Rocklt;/genregt; lt;albumsgt; lt;album year="2006"gt;If These Trees Could Talklt;/albumgt; lt;album year="2009"gt;Above the Earth, Below the Skylt;/albumgt; lt;/albumsgt; lt;/musiciangt; lt;musician type="solo"gt; lt;namegt;Justin Berghlt;/namegt; lt;genregt;Pop-Rocklt;/genregt; lt;albumsgt; lt;album year="2005"gt;Out of My Handslt;/albumgt; lt;album year="2010"gt;Lateraluslt;/albumgt; lt;/albumsgt; lt;/musiciangt; lt;musician type="band"gt; lt;namegt;Toollt;/namegt; lt;genregt;Progressive Metallt;/genregt; lt;albumsgt; lt;album year="1993"gt;Undertowlt;/albumgt; lt;album year="1996"gt;Aenimalt;/albumgt; lt;album year="2001"gt;Lateraluslt;/albumgt; lt;album year="2006"gt;10,000 Dayslt;/albumgt; lt;/albumsgt; lt;/musiciangt; lt;/musiciansgt;
Ожидаемый результат:
2 2 4
Мой код в настоящее время:
for $n in //musicians/musician/albums let $count := count($n) return $count
Мой вывод таков
1 1 1
Ответ №1:
В настоящее время вы подсчитываете количество albums
элементов, в то время как ваша заявленная цель-подсчитать album
элементы.
Измените свой код следующим образом:
for $n in //musicians/musician/albums let $count := count($n/album) return $count
Это дает необходимый результат:
2 2 4