次のような XML ツリーがあります。
<root>
<a>
<a1>A1</a1>
<a2>A2</a2>
...
...
<an>An</an>
</a>
<b>
<b1>B1</b1>
<b2>B2</b2>
...
...
<bm>Bm</bm>
</b>
<x>
<x1>X1</x1>
<x2>X2</x2>
...
...
</x>
<y>
...
...
</y>
...
...
</root>
Oracle XMLQuery と XQuery を使用して、この XML を次のように変更します。
<root>
<a>
<a1>A1</a1>
<a2>A2</a2>
...
...
<an>An</an>
<b>
<b1>B1</b1>
<b2>B2</b2>
...
...
<bm>Bm</bm>
</b>
</a>
<x> <!-- This x node and all its siblings have to stay where they are. -->
<x1>X1</x1>
<x2>X2</x2>
...
...
</x>
<y>
...
...
</y>
...
...
</root>
要するに、b
ノード全体とその子孫をa
追加して下に置きたいのです。
私がこれまでに試したことは次のとおりです。
WITH xdata AS (
SELECT XMLTYPE('<root>
<a>
<a1>A1</a1>
<a2>A2</a2>
</a>
<b>
<b1>B1</b1>
<b2>B2</b2>
</b>
<x>
<x1>X1</x1>
<x2>X2</x2>
</x>
</root>') AS xmldata
FROM dual
)
SELECT XMLQuery ('for $a in $x1/root/a, $b in $x1/root/b
return <root>{$a}{$b}</root>'
PASSING x.xmldata AS "x1" RETURNING CONTENT) AS output
FROM xdata x;
これは明らかに私に非常に間違った結果をもたらします。多分私がしようとしていることは完全に間違っています。助けてください。