Xquery 如何重建元素,添加元素
以下是我要重建的元素:Xquery 如何重建元素,添加元素,xquery,Xquery,以下是我要重建的元素: <element> <1></1> <2></2> <3> <3a> <3a1> </3a1> </3a> </3> </element> 我想在结尾之前添加一个元素()。这就是我尝试过的: return <
<element>
<1></1>
<2></2>
<3>
<3a>
<3a1>
</3a1>
</3a>
</3>
</element>
我想在
结尾之前添加一个元素(
)。这就是我尝试过的:
return <element> element/*, <4>data</4> </element>
返回元素/*,数据
但我得到的是插入的
,如下所示:
<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>
数据
您可以按以下方式插入额外的元素:
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版本“3.0”;
将函数声明为本地:作为最后一个子节点插入($node as node(),$new content as node())作为节点(){
元素{node name($node)}
{
$node/@*
,
对于$node/node()中的$child
返回$child
,
$newcontent
}
};
让$input:=
返回
本地:作为最后一个子项插入($input,data)xquery版本“3.0”;
将函数声明为本地:作为最后一个子节点插入($node as node(),$new content as node())作为节点(){
元素{node name($node)}
{
$node/@*
,
对于$node/node()中的$child
返回$child
,
$newcontent
}
};
让$input:=
返回
本地:作为最后一个子项插入($input,data)
有关更多选项,请参阅。FYI要使XML有效,元素名称必须是有效的QNames,不能以数字开头。此外,假设这是有效的,您在此处提供的代码应该会返回预期的输出,因此我怀疑您的示例没有反映问题。@wst,要使XML有效,它需要DTD或架构(此处不提供)–如果没有它,则可能是格式良好的。@OP:您尝试过什么,您可以使用XQuery Update,还是必须重新构造元素?@JensErat(带或不带schema/DTD),元素名称必须是有效的QName。此外,使用此处提供的代码无法获得OP建议的输出……这个问题显然缺少某些内容。