Сохранение данных в eXist-db

Я новичок в eXist-db. Что я хочу сделать, так это сохранить БОЛЬШОЙ объем данных в формате XML в собственной базе данных XML для быстрой обработки (поиск/обновление/и т. д.). Но, к сожалению, предоставленная документация не объясняет четко, как сохранять/изменять данные в постоянная база данных (или вернуться к файлам XML).

Ниже примерно то, что я хочу сделать в eXide. Строки, которые я не знаю, как сделать, прокомментированы в вопросах Q1, Q2 и Q3:

xquery version "3.0";

let $data := doc('file:///c:/eXist/database.xml')

let $newdata := doc('file:///c:/import/newdata.xml')

(: Q1. How to do merging of data like below? :)
update insert $newdata into $data

(: Q2. How to save the changes back to database.xml? :)
doc('file:///c:/eXist/database.xml') := $data

let $result := <result>
{
    for $t in $data/book/title
    where $t/../publisher = 'XYZ Company'
    return $t
}
</result>

(: Q3 How to save query result to a new file? :)
doc('file:///c:/export/XYZ Company Report.xml') := $result

Заранее спасибо.


person SF Lee    schedule 17.09.2013    source источник


Ответы (1)


Все ваши функции doc() указывают на файлы в вашей файловой системе, что указывает на непонимание того, как работать с XML-данными с помощью eXist-db. Однако при работе с eXist-db все манипуляции с XML-данными происходят в базе данных. Таким образом, вам нужно сначала сохранить данные XML в базе данных, а затем вы можете выполнять свои манипуляции. Затем, при необходимости, вы можете сериализовать данные обратно в файловую систему.

Чтобы сохранить данные в базе данных, см. Получение данных в eXist-db.

Чтобы объединить данные, см. расширения XQuery Update.

Чтобы сериализовать данные обратно в файловую систему, см. документацию по функциям для file:serialize().

person Joe Wicentowski    schedule 17.09.2013
comment
Спасибо за информацию. - person SF Lee; 18.09.2013