1
我試圖更新節點的屬性值並返回其先前的值全部在一個查詢中,我找不到一種方法來執行此操作。我使用BaseX作爲我的XML/XQuery數據庫。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不可能?
是我見過BaseX文檔中的專有功能,但希望的是更通用的方法。所以在Xquery中,你將不得不執行兩個連續的查詢來獲得一個值,然後改變它?沒有其他方法?那麼轉換方法呢? – koopajah 2013-02-20 11:20:52
BaseX/XQuery更新中沒有其他方法。轉換不具有持久性,所以您只能更改臨時副本。也許可以使用[XQuery Scripting Extension](http://www.w3.org/TR/xquery-sx-10/),但我不知道它,BaseX也不支持它。 – 2013-02-20 11:25:34
關於官方XQuery更新工具,您可能很幸運得知有一些計劃支持XQUF 3.1中的更新和結果。 – 2013-02-20 11:26:08