Динамически использовать модули библиотеки XQuery с Java - PullRequest
0 голосов
/ 12 октября 2010

С XQuery вы можете использовать библиотечные модули в вашем запросе.Их можно импортировать с помощью

import module namespace mynamespace = 'com.mynamespace' at 'filename.xq';

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

Например, моя динамическая конфигурация говорит, что mynamespace должно быть связано с filename1.xq ...

import module namespace mynamespace = 'com.mynamespace' at 'filename1.xq';

, а затем, возможно, после некоторых щелчков пользователя, myfile2.xq следует использовать?

import module namespace mynamespace = 'com.mynamespace' at 'myfile2.xq';

Если вы используете Java & Saxon, вы можете использовать, возможно, ModuleURIResolver, но распознаватель является частью коммерческой, несвободной версии Enterprise Edition.Есть ли обходной путь для этой проблемы, если вы находитесь в среде Java?

1 Ответ

0 голосов
/ 14 октября 2010

Вариант 1

Возможно, вы захотите проверить с помощью eval / invoke типа API, специфичных для XQuery- (Реализация).

В API MarkLogic XQuery вы можете найти

xdmp: eval («XQUERY AS STRING») или xdmp: invoke (указатель на функцию, params) помогает достичь типа отражения пользовательской реализации.

Вариант 2 попытайтесь использовать некоторые шаблоны функционального проектирования на основе языка процедур для решения таких проблем.

ПОМНИТЕ: Используя API типа «eval», вы также должны быть очень осторожны с XQuery Injection.

...