Me gustaría saber cómo podría ordenar el elemento no deseado con un bucle que no devolvería elementos con la misma identificación. Fiddle tiene un ejemplo y se esperaba: https://xqueryfiddle.liberty-development.net/94hvTyG

let $act :=(
<act id="1">
 <data>hel1lo</data>
 <data>hel1lo</data>
</act>,
<act id="2">
 <data>hel1lo</data>
 <data>hel1lo</data>
</act>,
<act id="3">
 <data>hel1lo</data>
 <data>hel1lo</data>
</act>
)
let $act1 :=(
<act id="4">
 <data>hel1lo</data>
 <data>hel1lo</data>
</act>,
<act id="1">
 <data>hel1lo</data>
 <data>hel1lo</data>
</act>
)

for $data in ($act,$act1)
where $act/@id != $act1/@id 
return
$data

Me gustaría saber cómo podría separarme del elemento $ act1 <act id="1">

Esperado:

<?xml version="1.0" encoding="UTF-8"?>
<act id="1">
   <data>hel1lo</data>
   <data>hel1lo</data>
</act>
<act id="2">
   <data>hel1lo</data>
   <data>hel1lo</data>
</act>
<act id="3">
   <data>hel1lo</data>
   <data>hel1lo</data>
</act>
<act id="4">
   <data>hel1lo</data>
   <data>hel1lo</data>
</act>
0
GWL 26 nov. 2019 a las 17:13

1 respuesta

La mejor respuesta

Parece un problema que se puede resolver agrupando por @id y luego devolviendo el primer elemento de cada grupo:

for $data in ($act,$act1)
where $act/@id != $act1/@id
group by $id := $data/@id
return
$data[1]

https://xqueryfiddle.liberty-development.net/94hvTyG/1

1
Martin Honnen 26 nov. 2019 a las 19:46