xquery-如何使用已经作为另一个'.xq'文件中的模块导入的'.xq'文件(包含函数)(包含更多函数)

时间:2012-10-27 14:56:56

标签: xquery flwor

我正在使用Xquery文件 - >让我们通过导入它来说file1.xq。

现在这个文件(file1.xq)在其中导入另一个文件file2.xq。

我不仅想使用file1.xq的功能,还想使用file2.xq的功能。

所以我尝试将两者都导入到我的实际xquery代码中(使用两个文件中的函数)但是我得到了一个重复的函数定义错误。

我在这里做错了什么?如何在我的Xquery代码中使用file2.xq中定义的Xquery函数? ESP。在这种情况下,file1.xq正在使用file2.xq的函数(它也是由我的xquery代码导入的)?

1 个答案:

答案 0 :(得分:1)

您可能没有定义合适的命名空间。因此,使用了默认命名空间,如果在不同文件中有两个函数,它们将映射到同一个函数,并且应该发生重复的函数定义错误。 由于您没有提供任何示例代码或更详细的代码,因此很难猜测。

因此,假设您的file2.xq应使用

声明其命名空间
module namespace _ = 'http://mycompany.org/file1';

然后,您可以使用

在此文件中定义您的功能
declare function :my-function() { "Whatever" }

现在可以使用

在您的实际xquery代码文件中导入此模块
import module namespace file1 = 'http://mycompany.org/file1';
file1:my-function()

您也可以使用

import module namespace file1 = 'http://mycompany.org/file1' at '/path/in/local/filesystem';

绝对指定file1.xq的位置。