我有一个元素列表,其中包含有关它们在 XML 树中的位置的信息。“底部”的元素,即出现在深度较低的元素之前的元素,包含文本。
<input>
<text n="x" xml:id="a" depth="1"/>
<div xml:id="b" depth="2"/>
<div xml:id="c" depth="3"/>
<p xml:id="e" depth="4">text</p>
<p xml:id="d" depth="4">text</p>
<p xml:id="x" depth="4">text</p>
<div xml:id="f" depth="3"/>
<lg xml:id="j" depth="4"/>
<l xml:id="k" depth="5">text</l>
<l xml:id="l" depth="5">text</l>
<p xml:id="n" depth="3">text</p>
</input>
我想在一次操作中将其重构为下面的 XML 树。
<text n="x" xml:id="a" depth="1">
<div xml:id="b" depth="2">
<div xml:id="c" depth="3">
<p xml:id="e" depth="4">text</p>
<p xml:id="d" depth="4">text</p>
<p xml:id="x" depth="4">text</p>
</div>
<div xml:id="f" depth="3">
<lg xml:id="j" depth="4">
<l xml:id="k" depth="5">text</l>
<l xml:id="l" depth="5">text</l>
</lg>
</div>
<p xml:id="n" depth="3">text</p>
</div>
</text>
我想我需要从深度最高的元素开始,即深度为 5 的所有元素,然后将它们包裹在深度为 5-1 的前一个元素中,依此类推,但我无法理解如何通过这个递归。
@xml:ids 仅供参考。
我的问题与我之前的stackoverflow问题相反。它类似于这个stackoverflow问题,但我需要使用 XQuery。