У меня есть XML-документ, например
<root>
<first>
First Level
<second>
second level
<third>
Third Level
</third>
</second>
<second2>
another second level
</second2>
</first>
</root>
Как преобразовать этот документ со всеми узлами, то есть, если узел содержит text
и child node
, преобразовать текст в дочерний узел (скажем, childtext) с помощью xquery-update
<root>
<first>
<childtext>First Level</childtext>
<second>
<childtext>second level</childtext>
<third>
Third Level
</third>
</second>
<second2>
another second level
</second2>
</first>
</root>
И вот что я пробовал:
let $a :=
<root>
<first>
First Level
<second>
second level
<third>
Third Level
</third>
</second>
<second2>
another second level
</second2>
</first>
</root>
return
copy $i := $a
modify (
for $x in $i/descendant-or-self::*
return (
if($x/text() and exists($x/*)) then (
insert node <childtext>
{$x/text()}
</childtext> as first into $x
(: here should be some code to delete the text only:)
) else ()
)
)
return $i
Я не мог удалить текст с родственным узлом.
let $a := ....
точно не рабочий код). Какие проблемы у вас есть с вашим текущим кодом? - person Jens Erat   schedule 13.01.2014