这是我想要重建的元素:
<element>
<1></1>
<2></2>
<3>
<3a>
<3a1>
</3a1>
</3a>
</3>
</element>
我想在<4>
结尾之前添加一个元素(<element>
)。这就是我的尝试:
return <element> element/*, <4>data</4> </element>
但我得到的是<4>
插入如下:
<element>
<1></1>
<2></2>
<3>
<3a>
<3a1>
**<4>data</4>**
</3a1>
</3a>
</3>
</element>
我如何实现这一目标:
<element>
<1></1>
<2></2>
<3>
<3a>
<3a1>
</3a1>
</3a>
</3>
<4>data</4>
</element>
答案 0 :(得分:1)
您可以按以下方式插入额外元素:
xquery version "3.0";
declare function local:insert-as-last-child($node as node(), $new-content as node()) as node() {
element {node-name($node)}
{
$node/@*
,
for $child in $node/node()
return $child
,
$new-content
}
};
let $input :=
<elements>
<element-1/>
<element-2/>
<element-3>
<element-3a>
<element-3aelement-1> </element-3aelement-1>
</element-3a>
</element-3>
</elements>
return
local:insert-as-last-child($input, <element-4>data</element-4>) xquery version "3.0";
declare function local:insert-as-last-child($node as node(), $new-content as node()) as node() {
element {node-name($node)}
{
$node/@*
,
for $child in $node/node()
return $child
,
$new-content
}
};
let $input :=
<elements>
<element-1/>
<element-2/>
<element-3>
<element-3a>
<element-3aelement-1> </element-3aelement-1>
</element-3a>
</element-3>
</elements>
return
local:insert-as-last-child($input, <element-4>data</element-4>)
有关更多选项,请参阅XQuery Wikibook。