1

ノードの属性値を更新し、その前の値をすべて1つのクエリで返そうとしていますが、それを行う方法が見つかりません。XML/XQueryデータベースとしてBaseXを使用しています。

今のところ私はこれをやってみました:

/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では不可能ですか?

4

1 に答える 1

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))
于 2013-02-20T11:16:38.367 に答える