gpt4 book ai didi

xquery - 如何使用 xquery 替换属性的值

转载 作者:行者123 更新时间:2023-12-04 08:23:46 26 4
gpt4 key购买 nike

我有一个xml文档如下

<users>
<user test="oldvalue">
<userid>sony</userid>
<name>vijay</name>
</user>
</users>

我正在尝试写一个 xquery
1) 找到具有给定用户 ID 的用户 - 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

我看到以下错误:
[XUTY0008] 预期作为替换目标的单个元素、文本、属性、注释或 pi。

我该如何解决?

最佳答案

你写了:

let $old := $users_doc/user[userid=$userid]/@trusted="oldvalue" 

因此, $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

编辑 : 我觉得用 replace value of比较好在这种情况下。

关于xquery - 如何使用 xquery 替换属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4168694/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com