У меня есть список элементов с информацией о том, насколько глубоко они расположены в дереве 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.