首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询如何在eXist-db (沙箱与存储查询)中实际运行?

查询如何在eXist-db (沙箱与存储查询)中实际运行?
EN

Stack Overflow用户
提问于 2012-04-19 16:47:04
回答 1查看 934关注 0票数 1

我在和eXist-db合作。执行查询时,eXist-db后端的进程是什么?例如,在下列情况下,查询如何以不同的方式运行?

  1. 在通过eXist沙箱执行查询时?
  2. 在通过REST接口执行查询时(即通过web浏览器)?
  3. 另外,当将CSV文件转换为位于同一集合中的XML文件时,后端会发生什么?(即使用概述的这里步骤。在我的例子中,我将CSV文件存储在数据库中。以下文件发生了什么变化:
代码语言:javascript
运行
复制
- CSV file  
- XQuery file
- XML file resulting from running the CSV file through the XQuery transformation

EN

回答 1

Stack Overflow用户

发布于 2012-04-19 21:08:39

  1. eXist XQuery砂箱是一个带有文本字段和提交按钮的网页。输入查询并提交查询时,文本字段的内容通过Ajax发送到服务器上的sandbox.xql查询,服务器动态执行查询(使用util:eval())。然后,结果序列存储在会话中。结果序列中的前十项随后显示在“结果”窗口中;您可以一次浏览结果10。通过将结果存储在会话中,对结果的分页不需要重新提交查询。下次提交查询时,将清除旧结果,并将新结果插入到会话中。
  2. 当您通过REST接口执行查询时(即将web浏览器直接指向数据库中,例如.xq、.xqy、.xql或.xquery文件)。数据库读取文件并执行查询,直接将所有结果返回浏览器。

注意,如果查询返回多个结果,那么Sandbox不会抱怨,但浏览器确实希望XML文档格式良好--也就是说,只有一个根元素。将查询从沙箱移到存储的.xq文件时,常见的错误或误解是忘记将查询结果包装在单个根元素中。

例如,在“沙箱”中,可以将其输入为查询:

代码语言:javascript
运行
复制
<x/>, <y/>, <z/>

当你提交它的时候,你会得到三个结果:

  1. <x/>
  2. <y/>
  3. <z/>

但是,如果将此文件保存为.xq文件(例如,myquery.xq)并通过http://localhost:8080/exist/rest/db/myquery.xq调用该文件,则会在浏览器中得到一个错误,说明结果格式不佳。解决方案是将结果封装在根元素中,例如:

代码语言:javascript
运行
复制
<results><x/><y/><z/></results>

你的最后一个问题有点模糊,但是你看到我对你之前的问题关于如何运行CSV转换的回答了吗?我概述了如何编写查询以获取存储在数据库中的CSV文件,将CSV文件转换为XML,并将结果保存为数据库中的XML文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10232859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档