[英]BaseX: Updates are not written back
我正在嘗試在BaseX中運行以下查詢,
let $c := doc('t.xq')//entry return (replace value of node $c/author with 'BaseX' )
輸入文件t.xq
是
<entry>
<title>Transform expression example</title>
<author>BaseX Team</author>
</entry>
我希望它返回修改后的數據,但是它執行並且什么也不返回。 它說Updates are not written back
如何查看修改后的entry
? 哪些命令返回更改的數據?
從http://docs.basex.org/wiki/XQuery_Update引用:
在BaseX中,所有更新都在數據庫節點或主內存中執行。 默認情況下,更新操作不會影響原始輸入文件(查詢信息中顯示信息字符串“ Updates not not backed”(更新未寫回)以表明這一點)。 存在以下解決方案可將XML文檔和二進制資源寫入磁盤:
- 當打開WRITEBACK選項時,通過fn:doc或fn:collection檢索的文件的主內存實例更新將傳播回磁盤。 也可以通過-u在命令行上激活此選項。 在運行查詢之前,請確保備份原始文檔。
- fn:put或file:write之類的功能可用於將單個XML文檔寫入磁盤。 使用file:write-binary,可以寫入二進制資源。
- 可以使用EXPORT命令將數據庫的所有資源寫入磁盤。
但是,如果只需要獲取更新命令的輸出,則可以將其復制到變量(在內存中)並按以下方式轉換此變量:
copy $c := doc('t.xq')//entry
modify (
replace value of node $c/author with 'BaseX'
)
return $c
您還可以使用update
,它是編寫簡單轉換表達式的便捷運算符。
doc('t.xq')//entry update replace value of node ./author with 'BaseX'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.