eXist: возможно ли хранить модули XQuery в файлах XML?

Вы можете сохранить модуль в eXist, например, следующий, скажем, под /modules/my.xqm:

module namespace my = "http://www.example.com/";
declare function my:answerToTheUltimateQuestion() as xs:integer { 42 }

А затем импортируйте его в запрос, например:

import module namespace my="http://www.example.com/" 
                        at "xmldb:exist:///db/modules/my.xqm";
my:answerToTheUltimateQuestion()

Вместо того, чтобы хранить XQuery в «текстовом файле», можно ли сохранить его в файле XML, который был бы просто оболочкой для XQuery? Я думаю о обертке, похожей на ту, которую мы используем при отправке запросов POST в eXist (<exist:query><exist:text>). Это упростило бы манипулирование модулями XQuery с помощью инструментов, которые ожидают данные XML, хранящиеся в базе данных.


person avernet    schedule 08.02.2011    source источник


Ответы (1)


Вы можете сохранить свой XQuery в формате XQueryX в eXist-db, а затем использовать небольшой XQuery и XSLT из спецификации XQueryX W3C в eXist-db, чтобы преобразовать его в XQuery и выполнить.

person Adam Retter    schedule 08.02.2011
comment
Адам, спасибо за совет. Итак, у меня есть файл XML, содержащий XQuery для модуля в module.xml: <module>XQuery for module</module>. В начале добавляю: <?xml-stylesheet href="to-xquery.xsl" type="text/xsl" ?>. Когда я выполняю GET для module.xml, он обрабатывается XSLT, и я получаю обратно XQuery. Единственная проблема заключается в том, что тип содержимого — text/html, а не application/xquery. Я добавил <xsl:output method="text" media-type="application/xquery"/> в XSLT, но, похоже, это не повлияло на тип содержимого. Я что-то упускаю? - person avernet; 08.02.2011