Как на самом деле выполняются запросы в eXist-db (песочница или хранимый запрос)

Я работаю с eXist-db. Какие процессы происходят на сервере eXist-db при выполнении запроса? Например, как запросы выполняются по-разному в следующих сценариях?

  1. При выполнении запроса через песочницу eXist?

  2. При выполнении запроса через интерфейс REST (т. е. через веб-браузер)?

  3. Кроме того, что происходит на сервере при преобразовании файла CSV в файл XML, находящийся в той же коллекции? (т. е. с помощью шагов, описанных здесь. В моем случае я сохранил свой CSV-файл в База данных Что происходит со следующими файлами:

    • CSV file
    • XQuery-файл
    • XML-файл, полученный в результате запуска файла CSV через преобразование XQuery.

person krunal    schedule 19.04.2012    source источник


Ответы (1)


  1. песочница eXist XQuery – это веб-страница с текстовым полем и кнопкой отправки. Когда вы вводите свой запрос и отправляете запрос, содержимое текстового поля отправляется в запрос sandbox.xql на сервере через Ajax, и сервер динамически выполняет запрос (используя util:eval()). Затем последовательность результатов сохраняется в сеансе. Затем в окне результатов отображаются первые десять элементов результирующей последовательности; вы можете пролистывать результаты по 10 за раз. Благодаря сохранению результатов в сеансе просмотр результатов не требует повторной отправки запроса. В следующий раз, когда вы отправляете запрос, ваши старые результаты очищаются, а новые результаты вставляются в сеанс.

  2. Когда вы выполняете запрос через интерфейс REST (т. е. указывая ваш веб-браузер непосредственно на запрос, хранящийся в базе данных, например файл .xq, .xqy, .xql или .xquery). База данных считывает файл и выполняет запрос, напрямую возвращая все результаты прямо в браузер.

Обратите внимание, что хотя песочница не жалуется, если ваш запрос возвращает несколько результатов, браузер ожидает, что XML-документы будут правильно сформированы, т. е. иметь один корневой элемент. Распространенной ошибкой или недоразумением, возникающим при перемещении запроса из песочницы в сохраненный файл .xq, является забывание поместить результаты запроса в один корневой элемент.

Например, в Песочнице вы можете ввести это как запрос:

<x/>, <y/>, <z/>

Когда вы отправите его, вы получите 3 результата:

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

Но если вы сохраните это как файл .xq (например, myquery.xq) и вызовете его через http://localhost:8080/exist/rest/db/myquery.xq, то вы получите сообщение об ошибке в браузере о неправильном формировании результатов. Решение состоит в том, чтобы обернуть результаты в корневой элемент, например:

<results><x/><y/><z/></results>

Ваш последний вопрос немного расплывчатый, но видели ли вы мой ответ на ваш предыдущий вопрос о том, как запустить преобразование CSV? Я описал, как написать запрос, чтобы получить CSV-файл, хранящийся в базе данных, преобразовать CSV-файл в XML и сохранить результаты в виде XML-файла в базе данных.

person Joe Wicentowski    schedule 19.04.2012