0
我试图使用XQuery更新包装与另一个新节点的节点,我被困在几个不同的错误,让我给你一个简单的例子:XQuery更新来包装现有节点
初始XML是
<a id="test">
<title>title</title>
</a>
XQuery代码是:
copy $x := db:open('testdb')/a[@id eq 'test']/title
modify replace node $x
with <b>{$x}</b>
return <ok/>
我使用basex为周围的数据库,这就是为什么我使用DB:开启功能。
我想要得到的到底是
<a id="test">
<b>
<title>title</title>
</b>
</a>
但是我收到一个错误:
[XUDY0009] Target has no parent: element title {...}.
注:查询结果:
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 {...}.
什么是做这种更新查询的正确方法?
第一个查询会引发错误“[XUDY0009] Target没有父母:元素。“第二个查询在“替换”标记中引发语法错误表达式:(但第三个查询正常工作) – IgnacioHR
我已更新前两个查询。要了解更新表达式和非更新表达式之间的区别,请查看语义:http://docs.basex.org/wiki/Update。 –
好!谢谢!现在所有查询都可以使用! – IgnacioHR