2015-05-07 2 views
-3

У меня есть требование для вызова функции Java в Xquery с помощью Saxon processor.I стало известно, что saxon имеет различные издания, как HOME, PROFESSIONAL and ENTERPRISE.САКСОНСКИЕ - Вызов внешних функций Java в XQUERY

Я ищу открытый код edition, который может помочь мне вызвать external java functions in xquery.

Может кто-нибудь, пожалуйста, помогите мне с образцом кода?

ответ

2

Если вы вернетесь в Saxon 9.1 B, вы можете сделать это в версии с открытым исходным кодом. Начиная с версии 9.2 и введения выпусков HE, PE и EE вам нужен один из коммерческих выпусков PE или EE для прямого вызова в Java (используйте рефлексивные функции расширения). С HE вы можете реализовать интегрированные функции расширения http://saxonica.com/html/documentation/extensibility/integratedfunctions/.

+0

Спасибо за отзыв Мартин. Можете ли вы опубликовать образец кода, если он есть. Это будет очень полезно для меня. –

+0

В документации, на которую я ссылаюсь, есть такие примеры, как http://saxonica.com/html/documentation/extensibility/integratedfunctions/ext-simple-J.html и http://saxonica.com/html/documentation/extensibility/integratedfunctions/ext -full-J.html. И простой пример, вызывающий рефлексивную функцию расширения, также взятый из документации: 'declare namespace math =" java: java.lang.Math "; для $ d in (4, 9, 16, 25) return math: sqrt ($ d) '. –

+0

Я пробовал его и его работу, но я искал код, который использует saxon 9.1B для вызова внешних методов. –

1

Вы можете вызвать функции расширения Java во всех изданиях саксонского языка.

С открытым исходным кодом (Saxon HE) вы можете использовать только механизм, в котором вам нужно написать класс функций расширения в Java, реализовать некоторые абстрактные классы из Saxon и настроить Saxon с этими.

В других выпусках вы также можете использовать механизм интроспекции, в котором вы используете пространство имен с определенным форматом, который будет искать реализацию, соответствующую функции QName в пути к классам.

Для более надежного подхода, который также позволяет вам свободно выбирать пространство имен (не прибегая к какой-либо детали реализации), я рекомендую первый выше.

Смежные вопросы