Одним из способов будет использование всех элементов во внутреннем for .. at
, чтобы переменная, связанная в предложении at
, имела правильное значение относительно всей последовательности, но затем добавляла предложение where
where $count/.. is $data
передвозврат, гарантирующий, что мы обрабатываем только те элементы, у которых есть правильный родительский элемент, т. е. где родительский элемент является текущим $data
item:
let $act :=(
<act time="1231">
<data>hel1lo</data>
<data>hel1lo</data>
<data>hel231lo</data>
<data>hel1lo</data>
<data>hel12lo</data>
<data>hel1lo</data>
<data>hel123lo</data>
</act>,
<act time="51292">
<data>world</data>
<data>wo2rld2</data>
<data>world2</data>
<data>worl2d</data>
<data>worl1d</data>
<data>worl2d</data>
</act>
)
for $data in $act
return
<act time ="{$data/@time}">
{
for $count at $cnt in $act/data
where $count/.. is $data
return
<data value ="{$count}">{$cnt}</data>
}
</act>
https://xqueryfiddle.liberty -development.net / pPgCcoE /4