Hi Joseph,
what about this?
let $input :=
<c>
<a>red</a>
<a>red</a>
<a>blue</a>
<a>green</a>
<a>green</a>
</c>
return
<c>{
for $a in $input/*
let $t := $a/text()
group by $t
return
for $a2 at $pos in $a
return <a n="{$pos}">{$a2/text()}</a>
}</c>
Ciao,
M.
On 27/01/2017 09:08, meumapple wrote:
Hi,
I have a structure like this:
<c>
<a>red</a>
<a>red</a>
<a>blue</a>
<a>green</a>
<a>green</a>
</c>
And I would like to get:
<c>
<a n="1">red</a>
<a n="2">red</a>
<a n="1">blue</a>
<a n="1">green</a>
<a n="2">green</a>
</c>
I have tried with two for loops after having identified the distinct-values(). This is in principle correct but it takes too long (I have many distinct values and a elements), because I cannot exit the for loop as soon as I get a match. I have been able to get the result with the window clause and then counting the elements of the window with a nested for-loop: is there an alternative solution? Thanks.
Joseph