xquery- ошибка определения дублирующейся функции при использовании библиотеки functx с сайта xqueryfunctions.com

Я пытаюсь запустить некоторый код Xquery в java-программе и для этой цели использую бесплатную java-библиотеку Saxon.

Теперь по какой-то причине я получаю повторяющиеся ошибки "определения дублирующихся функций" при запуске этого кода - эта ошибка происходит для библиотеки Xquery "Functx", которую я скачал с xqueryfunctions.com.

Я не понимаю, что здесь не так? Я делаю прямые вызовы некоторых функций в библиотеке FunctX.

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

Библиотека, которую я использую, находится по этому адресу:
http://e0aad1ab954aa14b69e0-bd55729d8fadb0b3214bfee0a8fb65e0.r16.cf1.rackcdn.com/functx-1.0.xq

Раздел журнала ошибок приведен ниже:

Error on line 2488 column 4 of functx-1.0.xq:
  XQST0034 XQuery static error near #...ion the duration :) declare#:
    Duplicate definition of function functx:total-days-from-duration (see line 2
 484 in
  http://e0aad1ab954aa14b69e0-bd55729d8fadb0b3214bfee0a8fb65e0.r16.cf1.rackcdn.c
 om/functx-1.0.xq)
Error on line 2502 column 4 of functx-1.0.xq:
  XQST0034 XQuery static error near #...ion the duration :) declare#:
    Duplicate definition of function functx:total-hours-from-duration (see line
 2498 in
 http://e0aad1ab954aa14b69e0-bd55729d8fadb0b3214bfee0a8fb65e0.r16.cf1.rackcdn.c
 om/functx-1.0.xq)
 Error on line 2516 column 4 of functx-1.0.xq:
 XQST0034 XQuery static error near #...ion the duration :) declare#:
   Duplicate definition of function functx:total-minutes-from-duration (see lin
 e 2512 in
 http://e0aad1ab954aa14b69e0-bd55729d8fadb0b3214bfee0a8fb65e0.r16.cf1.rackcdn.c
 om/functx-1.0.xq)
Error on line 2530 column 4 of functx-1.0.xq:
  XQST0034 XQuery static error near #...ion the duration :) declare#:
    Duplicate definition of function functx:total-months-from-duration (see line
2526 in
  http://e0aad1ab954aa14b69e0-bd55729d8fadb0b3214bfee0a8fb65e0.r16.cf1.rackcdn.c
 om/functx-1.0.xq)
Error on line 2544 column 4 of functx-1.0.xq:
  XQST0034 XQuery static error near #...ion the duration :) declare#:
    Duplicate definition of function functx:total-seconds-from-duration (see lin
 e 2540 in
  http://e0aad1ab954aa14b69e0-bd55729d8fadb0b3214bfee0a8fb65e0.r16.cf1.rackcdn.c
 om/functx-1.0.xq)
Error on line 2558 column 4 of functx-1.0.xq:
  XQST0034 XQuery static error near #...e string to trim :) declare#:
    Duplicate definition of function functx:total-years-from-duration (see line
  2554 in
 http://e0aad1ab954aa14b69e0-bd55729d8fadb0b3214bfee0a8fb65e0.r16.cf1.rackcdn.c
 om/functx-1.0.xq)

Теперь посмотрим на последнюю ошибку, как показано выше - номера строк для ошибки определения дублирующейся функции в functx-1.0.xq: "2558" и "2554".

Соответствующий код из файла functx-1.0.xq для строк 2554-2558 приведен ниже:

 declare function functx:total-years-from-duration 
   ( $duration as xs:yearMonthDuration? )  as xs:decimal? {

    $duration div xs:yearMonthDuration('P1Y')
  } ;

Как мне решить эту ошибку?

1 ответ

Когда вы используете движок xquery в цикле, например (в моем случае) и используете один единственный объект для выполнения нескольких xquery, которые импортируют одну и ту же функцию, движок будет пытаться импортировать функцию каждый раз, поэтому вы дублируете второй цикл.

Чтобы решить эту проблему, я просто сбрасываю конфигурацию объекта каждый раз, когда выполняю xquery (в моей проблеме с Java я создал класс, который запускает механизм xquery и каждый раз выполняет настройку с 0, чтобы предыдущий запуск не испортил новый запуск).

Другие вопросы по тегам