簡體   English   中英

BaseX:更新不會被回寫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM