包装现有节点的XQuery更新
我试图使用XQuery update将一个节点与另一个新节点包装在一起,但我遇到了几个不同的错误,让我给您举一个简短的示例: 初始XML是包装现有节点的XQuery更新,xquery,basex,Xquery,Basex,我试图使用XQuery update将一个节点与另一个新节点包装在一起,但我遇到了几个不同的错误,让我给您举一个简短的示例: 初始XML是 <a id="test"> <title>title</title> </a> 注:查询结果: db:open('testdb')/a[@id eq 'test']/title 是 执行此类更新查询的正确方法是什么?您需要修改绑定到$x的节点,并返回$x: copy $a := db:open('tes
<a id="test">
<title>title</title>
</a>
注:查询结果:
db:open('testdb')/a[@id eq 'test']/title
是
执行此类更新查询的正确方法是什么?您需要修改绑定到$x的节点,并返回$x:
copy $a := db:open('testdb')/a[@id eq 'test']
modify replace node $a/title with <b>{ $a/title }</b>
return $a
如果要更新数据库节点本身,则无需使用copy
或update
:
let $title := db:open('testdb')/a[@id eq 'test']/title
return replace node $title with <b>{ $title }</b>
let$title:=db:open('testdb')/a[@id eq'test']/title
返回用{$title}替换节点$title
第一个查询引发错误“[XUDY0009]目标没有父:元素”。第二个查询在“replace”标记上引发语法错误表达式:(但第三个查询工作正常。我已更新了前两个查询。要了解更新和非更新表达式之间的区别,请查看语义:。
db:open('testdb')/a[@id eq 'test']/title
<title>title</title>
copy $x := db:open('testdb')/a[@id eq 'test']/title
modify replace node db:open('testdb')/a[@id eq 'test']/title
with <b>{$x}</b>
return <ok/>
[XUDY0014] Node was not created by copy clause: element title {...}.
copy $a := db:open('testdb')/a[@id eq 'test']
modify replace node $a/title with <b>{ $a/title }</b>
return $a
db:open('testdb')/a[@id eq 'test'] update {
replace node title with <b>{ title }</b>
}
let $title := db:open('testdb')/a[@id eq 'test']/title
return replace node $title with <b>{ $title }</b>