XQuery как считать с условием "где" - PullRequest
0 голосов
/ 01 мая 2020

Я только начинаю изучать XQuery, и я хочу, чтобы он показывал мне, что количество фестивалей с жанром (genero) совпадает с "металлом". Я не могу получить их общее количество, только отдельно.

Xquery

for $b in //festival
where $b/@genero="Metal"
return <prueba>{count ($b/@genero="Metal"), $b//nombre}</prueba>

XML

  <Festivales>
    <festival genero="Metal">
        <informacion>
            <nombre>Resurrection Fest</nombre>
            <fecha_inicio>2020-07-01</fecha_inicio>
            <fecha_fin>2020-07-04</fecha_fin>
    </festival>
    <festival genero="Rock-Heavy Metal">
        <informacion>
            <nombre>Rock the Night</nombre>
            <fecha_inicio>2020-06-26</fecha_inicio>
            <fecha_fin>2020-06-27</fecha_fin>
    </festival>
    <festival genero="Hardcore">
        <informacion>
            <nombre>Ieperfest</nombre>
            <fecha_inicio>2020-07-03</fecha_inicio>
            <fecha_fin>2020-07-05</fecha_fin>
        </informacion>
    </festival>
    <festival genero="Metal">
        <informacion>
            <nombre>Download UK</nombre>
            <fecha_inicio>2020-06-12</fecha_inicio>
            <fecha_fin>2020-06-14</fecha_fin>
        </informacion>
    </festival>
</Festivales>

Результат

<prueba>1<nombre>Resurrection Fest</nombre>
</prueba>
<prueba>1<nombre>Hellfest</nombre>
</prueba>
<prueba>1<nombre>Download UK</nombre>
</prueba>

Спасибо!

1 Ответ

0 голосов
/ 02 мая 2020
for $b in //festival[@genero="Metal"]
let $n := $b/informacion/nombre/text()
return 
    <prueba>
        {
            <cnt>{count(//festival[@genero="Metal"]/informacion/nombre[. = $n])}</cnt>
          , $b/informacion/nombre
        }
   </prueba>
...