我正在尝试在XML数据类型中插入新的XML元素,但是这个新的XML元素必须包含另一个XML元素的值。例如,给定以下XML:
<Config>
<SomeOtherNode>
<ValueToUse>123</ValueToUse>
</SomeOtherNode>
</Config>
应该呈现以下内容:
<Config>
<Node1>123</Node1>
<SomeOtherNode>
<ValueToUse>123</ValueToUse>
</SomeOtherNode>
</Config>
我尝试了以下但没有运气(它将XQuery作为实际值插入):
update Table
set Column.modify('insert <Node1>//SomeOtherNode/ValueToUse/text()</Node1> as first into /Config')
答案 0 :(得分:1)
XQuery使用花括号来表示包含的表达式,将内容表达式与文本文本区分开来。要修复查询,请使用大括号括起所附表达式:
<Node1>{ //SomeOtherNode/ValueToUse/text() }</Node1>
(花括号内的空白只是为了视觉清晰,不需要。)
花括号的目的在https://www.w3.org/TR/xquery-31/#doc-xquery31-EnclosedExpr的规范中定义:
定义:封闭表达式是 EnclosedExpr 制作的一个实例,它允许在花括号中使用可选表达式。
EnclosedExpr ::= "{" Expr? "}"
定义:在封闭的表达式中,括在花括号中的可选表达式称为内容表达式。