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

时间:2013-02-20 10:39:44

标签: xquery basex

我正在尝试更新节点的属性值并在一个查询中返回其先前的值,但我找不到办法。我正在使用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/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中不可能?

1 个答案:

答案 0 :(得分:3)

XQuery Update 不允许从更新查询返回结果。但是,您可以使用BaseX专有的update:output($seq)函数来执行此操作:

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