如何使用 xquery 替换属性的值
我有一个 xml 文档,如下所示,
<users>
<user test="oldvalue">
<userid>sony</userid>
<name>vijay</name>
</user>
</users>
我正在尝试编写一个 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
我看到以下错误: [XUTY0008] 单个元素、文本、属性、注释或 pi 需要作为替换目标。
我该如何解决这个问题?
I have an xml document as follows
<users>
<user test="oldvalue">
<userid>sony</userid>
<name>vijay</name>
</user>
</users>
I am trying to write an xquery to
1) find the user with the given userid - sony
2) change the value of the "test" attribute of the given user to "newvalue".
I am trying the following: (where doc_name = name of the xml document, 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
I see the following error:
[XUTY0008] Single element, text, attribute, comment or pi expected as replace target.
How do I fix this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您写道:
因此, $old 保存该节点集比较的结果。
您需要:
编辑:我认为在这种情况下最好使用
替换值
。You wrote:
So, $old holds the result for that node set comparison.
You need:
Edit: I think is better to use
replace value of
in this case.$old
的类型是 xs:boolean ——不是节点类型。因此,您收到的错误消息是正确的。您想要:
顺便说一句:标准 XQuery 中没有
replace
运算符。The type of
$old
is xs:boolean -- not a node type. Therefore, the error message you get is correct.You want:
BTW: There is no
replace
operator in the standard XQuery.