0

私はXqueryファイルを使用しています->それをインポートしてfile1.xqとしましょう。

このファイル (file1.xq) は、その中に別のファイル file2.xq をインポートします。

file1.xq の関数だけでなく、file2.xq の関数も使用したいです。

そのため、実際の xquery コード (両方のファイルの関数を使用) に両方をインポートしようとしましたが、関数定義の重複エラーが発生しました。

ここで何が間違っていますか?file2.xq で定義されている Xquery 関数を Xquery コードで使用するにはどうすればよいですか? 特に。この場合、file2.xq の関数が file1.xq (これは私の xquery コードによってもインポートされます) によって利用されていますか?

4

1 に答える 1

2

適切な名前空間を定義していない可能性があります。したがって、デフォルトの名前空間が使用され、異なるファイル内に 2 つの関数がある場合、それらは同じ関数にマップされ、関数定義の重複エラーが発生するはずです。サンプルコードやより詳細なコードを提供していないため、推測するのは困難です。

だから、あなたの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 の場所を絶対に指定します。

于 2012-10-28T16:41:34.603 に答える