你不能在一個語句中這樣做。你要麼需要:
- 使用多語句調用(用分號分隔主語句)
- 做內存的更新,更新後的內容傳遞給插入
關於1:
應用程序開發人員指南有部分約Semi-Colon as a Statement Separator,但總之它歸結爲寫你的查詢,如下所示:
xquery version "1.0-ml";
xdmp:document-insert("/fo.xml", <a>1</a>)
;
xquery version "1.0-ml";
xdmp:node-replace(fn:doc("/fo.xml")/a, <b>1</b>)
關於2:
有一些規定,操作起來非常類似於xdmp方法庫:節點 - *的,但對尚未保存到數據庫,而不是內容進行操作。您需要首先下載它們,然後將它們上傳到模塊數據庫以便使用它們。我知道的最好的版本是https://github.com/ryanjdew/XQuery-XML-Memory-Operations。您可以使用MLPM進行下載和安裝。有了這個庫,你可以寫如下:
import module namespace mem = "http://maxdewpoint.blogspot.com/memory-operations" at "/ext/mlpm_modules/XQuery-XML-Memory-Operations/memory-operations.xqy";
let $a := <a>1</a>
let $b := <b>1</b>
let $updated-a := mem:copy($a) ! (
mem:replace(., $a, $b),
mem:execute(.)
)
return xdmp:document-insert("/foo.xml", $updated-a)
HTH!在線路末端
xdmp:document-insert("/fo.xml", <a>1</a>);
xdmp:node-replace(fn:doc("/fo.xml")/a, <b>1</b>);
通知分號:
感謝您的更新......如何?我只提供了示例查詢,過去兩天我一直堅持使用此查詢,請你提供樣本或修改上述內容。 – Antony
我正在更新答案.. – grtjn
是的,但我正在使用循環,所以我不能存儲內存,如果我是商店內存重複的內容將被插入相同的XML。 – Antony