Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XQuery更改属性值并返回上一个属性值_Xquery_Basex - Fatal编程技术网

XQuery更改属性值并返回上一个属性值

XQuery更改属性值并返回上一个属性值,xquery,basex,Xquery,Basex,我试图更新一个节点的属性值,并在一个查询中返回它以前的值,但我找不到一种方法。我使用的是XML/XQuery数据库 目前,我已经尝试过这样做: /Root/Elem/properties/property[@id='17']/@format, replace value of node /Root/Elem/properties/property[@id='17']/@format with 'URL' 还有: for $prop in /Root/Elem/properties/proper

我试图更新一个节点的属性值,并在一个查询中返回它以前的值,但我找不到一种方法。我使用的是XML/XQuery数据库

目前,我已经尝试过这样做:

/Root/Elem/properties/property[@id='17']/@format,
replace value of node /Root/Elem/properties/property[@id='17']/@format with 'URL'
还有:

for $prop in /Root/Elem/properties/property[@id='17']
    let $format := $prop/@format
    return (replace value of node $prop/@format with 'URL', $format)
和多个其他测试,但都会导致以下错误:

List expression: no updating expression allowed.
这是BaseX的限制还是在XQuery中不可能?

XQuery Update不允许从更新查询返回结果。但是,您可以使用BaseX的专有功能来实现这一点:

for $prop in /Root/Elem/properties/property[@id='17']
let $format := $prop/@format
return (replace value of node $format with 'URL', update:output($format))

是的,我在BaseX文档中看到了这个专有函数,但希望有一个更通用的方法。所以,在Xquery中,您必须执行两个连续的查询来获得一个值,然后对其进行更改?没有其他方法吗?转换方法呢?BaseX/XQuery更新中没有其他方法。转换不是持久的,因此只能更改临时副本。也许也可以使用,但我不知道,BaseX也不支持。关于官方的XQuery更新工具,您可能很幸运地听到,XQUF 3.1中有一些计划同时支持更新和结果。谢谢您的评论。至少现在我知道这是XQuery的一个真正限制(目前),BaseX提供了一个替代方案。