0

我正在尝试在 java 程序中运行一些 Xquery 代码,为此我正在使用 Saxon 免费的 java 库。

现在由于某种原因,当我运行此代码时,我收到重复的“重复函数定义”错误——我从 xqueryfunctions.com 下载的“Functx”Xquery 库发生了这个错误。

我不明白这里有什么问题?我直接调用 FunctX 库中的一些函数。

下面给出的是错误日志的一部分——它还提到了“重复函数”的行号——但是,当我转到 2 个行号时,我看到一个行号对应于该函数的开头,而其他行号关闭了该功能。

我正在使用的库位于此 URL -
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')
  } ;

如何解决此错误?

4

1 回答 1

0

例如,当您在循环中使用 xquery 引擎(我的情况)并使用一个对象执行多个导入相同函数的 xquery 时,引擎每次都会尝试导入该函数,因此您复制了第二个循环。

为了解决这个问题,我每次执行 xquery 时只需重置对象配置(在我的 Java 问题中,我创建了一个运行 xquery 引擎的类,并且每次都从 0 开始执行所有配置,这样之前的运行就不会弄乱新的运行)。

于 2018-08-21T12:50:50.657 回答