Je souhaite ajouter les valeurs de certaines balises XML, puis ajouter à nouveau le résultat. Mais j'ai de la difficulté à ajouter les résultats, donc je n'ai qu'un seul résultat final.Ajout double dans Xquery
Imaginez que vous avez ceci:
<nodeA>
<nodeB>
<item>1</item>
<item>2</item>
<yesno>blah</yesno>
</nodeB>
<nodeC>
<thing>A</thing>
</nodeC>
</nodeA>
<nodeA>
<nodeB>
<item>3</item>
<item>4</item>
<yesno>blah</yesno>
</nodeB>
<nodeC>
<thing>B</thing>
</nodeC>
</nodeA>
Je veux obtenir ce résultat <result>A,1,2,B,3,4</result>
mais je reçois celui-ci: <result>A,1,2</result><result>B,3,4</result>
J'ai lu ceci: XQuery: how to properly append , in for loop mais je ne peux pas faire ça marche. Voici l'exemple de mon code.
let $contador := count(
for $x in $productDoc//*[substring(local-name(.),2,23)="nodeB"]
where not(exists ($x/ns0:yesno))
return
$x)
return
if ($contador = 0) then
<result> </result>
else
for $x in $productDoc//*[substring(local-name(.),2,18)="nodeB"]
where not(exists ($x//ns0:yesno))
return
for $y in $x//*[matches(name(.),'thing')]
let $z := $x//*[matches(name(.),'item')]
return
for $i in $y
let $c := concat($i,",",string-join($z,","))
return
let $d := string-join($c,",")
<result>{ $d }</result>
Je suppose que ce qui se passe est que j'annexant les résultats partiels à tort ... ou dans un mauvais endroit, mais je ne sais pas où le faire. Peut-être que je devrais appeler cette fonction d'une autre qui fait une jointure de chaîne du résultat. Qu'en penses-tu?
Il est préférable de donner un exemple de XML et le résultat que vous voulez obtenir. Assez difficile de comprendre ce que vous voulez juste regarder dans votre code. – Shcheklein
Je pensais que le code de l'exemple était visible, je l'ai édité pour le corriger. – deb