为什么BaseX不会在插入节点命令时修改文件?

时间:2014-08-31 22:53:47

标签: xquery basex xquery-3.0 xquery-update

我正在BaseX 7.9上执行以下XQuery代码,并且能够在结果窗口中看到插入。我甚至在关闭并重新打开集合后看到了新节点。但是,当我转到文件目录时,我发现它还没有被修改。那么,我怎样才能使插入反映在文件上呢? BaseX如何处理插入命令,因此它在数据库的上下文中是持久的,而不是在文件的上下文中?

let $up := <Employee Name="Joe">
    <Personal>
      <SSN>666-66-1234</SSN>
    </Personal>
    <StaffInfo>
      <Position>Doctor</Position>
      <AccountableTo>Jeff</AccountableTo>
    </StaffInfo>
  </Employee>
return insert node $up as last into doc('office')/Staff

2 个答案:

答案 0 :(得分:3)

BaseX数据库对应于它们创建的XML文件,但是采用特殊编码,以提高某些索引的高查询性能。使用XQuery Update更新数据库时,原始文件不会自动更新(因此,从数据库中序列化XML)。

使用

更新后,

导出数据库

  • 命令提示符EXPORT命令:

    EXPORT [path]
      Export database to XML.
    
  • 图形用户界面以及数据库下的菜单栏中的导出对话框,导出

答案 1 :(得分:2)

默认情况下,更新不会反映在数据库外部的XML文档中。但是,可以通过command-line flag -U或选项WRITEBACK强制执行更新。