我对 XML 文档数据库技术、Xquery/Xpath 等非常陌生。所以这可能是一个非常新手的问题。
场景:一些 XML 文档作为输入,想要运行一些转换,可以在这些 XML 文档上运行(使用 XQuery)。我想存储这些结果。进入与输入相同的 XML 数据存储。
到目前为止,我正在尝试使用 BaseX 文档数据库来存储和处理这些 XML 文档,并且到目前为止它非常易于使用,我印象深刻。
理想情况下,我想使用 XQJ API ( http://xqj.net/basex/ ) 与 BaseX 交互,因为我的理由是 XQJ 将尽可能独立于 BaseX 的应用程序代码的实现。次要选项会将我的 java 代码直接写入 BaseX API。
问题:我很难弄清楚如何将来自 XQuery 的结果作为新的“文档”存储在数据库中。也许这更多的是对 XQuery(或 XQuery 更新)本身的概念缺乏理解,而不是对 BaseX/XQJ API 的任何困难。
在这个简单的示例中,如果我有这样的查询,它会以我想要的新文档格式返回一些 XML 输出
let $items := //firstName
return <results>
{ for $item in $items
return <result> {$item} </result>
}
</results>
给
<results>
<result>
<firstName>Bob</firstName>
</result>
<result>
<firstName>Joe</firstName>
</result>
<result>
<firstName>Tom</firstName>
</result>
</results>
我想将此新<result>
文档存储回数据库中,以供以后查询/转换/等使用。在 SQL 中,这对我来说很有意义。我会做CREATE TABLE <name> SELECT <query>
orINSERT INTO
等。但我不清楚 XQuery 中的等价物是什么。我认为 XQuery 更新功能是我在这里需要的,但我很难找到具体的例子。
这在处理 XQJ 时更加复杂
XQResultSequence rs = xqe.executeQuery("//firstName");
// what do i do with it now??
有没有办法使用 BaseX 将此 XQResultSequence 持久化回数据库?或者更好的是,我可以直接在 XQResultSequence 上运行其他 XQueries 吗?
谢谢您的帮助!