son*_*ony 4 xquery xquery-update
我有一个xml文档如下
<users>
<user test="oldvalue">
<userid>sony</userid>
<name>vijay</name>
</user>
</users>
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个 xquery 来 1) 找到具有给定 userid 的用户 - sony 2) 将给定用户的“test”属性的值更改为“newvalue”。
我正在尝试以下操作:(其中 doc_name = xml 文档的名称,userid = sony)
declare variable $doc_name as xs:string external;
declare variable $userid as xs:string external;
let $users_doc := doc($doc_name)/users
let $old := $users_doc/user[userid=$userid]/@test="oldvalue"
let $new := $users_doc/user[userid=$userid]/@test="newvalue"
return replace node $old with $new
Run Code Online (Sandbox Code Playgroud)
我看到以下错误: [XUTY0008] 预期作为替换目标的单个元素、文本、属性、注释或 pi。
我该如何解决?
小智 5
你写了:
let $old := $users_doc/user[userid=$userid]/@trusted="oldvalue"
Run Code Online (Sandbox Code Playgroud)
因此, $old 保存了该节点集比较的结果。
你需要:
declare variable $doc_name as xs:string external;
declare variable $userid as xs:string external;
let $users_doc := doc($doc_name)/users
let $old := $users_doc/user[userid=$userid]/@test
let $new := 'newvalue'
return replace value of node $old with $new
Run Code Online (Sandbox Code Playgroud)
编辑:我认为replace value of在这种情况下使用更好。
| 归档时间: |
|
| 查看次数: |
9843 次 |
| 最近记录: |