将 xqsuite 用于 exist-db 中的库模块
using xqsuite for library modules in exist-db
我喜欢编写调用xq文件即可执行的库模块。但是,这些也包含我想测试的功能。像这样 some.xql
:
xquery version "3.0";
import module namespace xmldb="http://exist-db.org/xquery/xmldb";
declare namespace no="http://none";
declare namespace test="http://exist-db.org/xquery/xqsuite";
declare
%test:arg('1')
%test:assertEquals('2')
function no:something ($num as xs:string?) as xs:string {
return
$num + 1
};
xmldb:store('/db/data/', 'two.xml',<root>{no:something(1)}</root>)
但是我无法测试整个模块或其中的 no:something 函数。我在其他上下文中使用以下函数访问该函数没有问题:
import module namespace no="http://none" at "some.xql";
然而,当尝试从包装函数 运行 测试套件时,我不断收到 xpty00004 错误:
xquery version "3.0";
import module namespace test="http://exist-db.org/xquery/xqsuite" at "resource:org/exist/xquery/lib/xqsuite/xqsuite.xql";
test:suite(
inspect:module-functions(xs:anyURI("some.xql"))
)
我尝试了不同的方法来访问 no:some
函数,但没有锁定。我只是写了非常糟糕的查询,错误地使用了 xqsuite,还是这是一个错误?
您的 some.xql
是一个 主模块 ,您只能在 库模块 .[=17 中导入和测试函数=]
考虑重构为库模块,例如 no.xqm
:
xquery version "3.0";
module namespace no="http://none";
declare namespace test="http://exist-db.org/xquery/xqsuite";
declare
%test:arg('1')
%test:assertEquals('2')
function no:something ($num as xs:string?) as xs:string {
$num + 1
};
您的应用主模块some.xq
:
xquery version "3.0";
import module namespace no="http://none" at "no.xqm";
xmldb:store('/db/data/', 'two.xml',<root>{no:something(1)}</root>
你的测试运行器主模块tests.xq
:
xquery version "3.0";
import module namespace test="http://exist-db.org/xquery/xqsuite"
at "resource:org/exist/xquery/lib/xqsuite/xqsuite.xql";
test:suite(
inspect:module-functions(xs:anyURI("no.xqm"))
)
我喜欢编写调用xq文件即可执行的库模块。但是,这些也包含我想测试的功能。像这样 some.xql
:
xquery version "3.0";
import module namespace xmldb="http://exist-db.org/xquery/xmldb";
declare namespace no="http://none";
declare namespace test="http://exist-db.org/xquery/xqsuite";
declare
%test:arg('1')
%test:assertEquals('2')
function no:something ($num as xs:string?) as xs:string {
return
$num + 1
};
xmldb:store('/db/data/', 'two.xml',<root>{no:something(1)}</root>)
但是我无法测试整个模块或其中的 no:something 函数。我在其他上下文中使用以下函数访问该函数没有问题:
import module namespace no="http://none" at "some.xql";
然而,当尝试从包装函数 运行 测试套件时,我不断收到 xpty00004 错误:
xquery version "3.0";
import module namespace test="http://exist-db.org/xquery/xqsuite" at "resource:org/exist/xquery/lib/xqsuite/xqsuite.xql";
test:suite(
inspect:module-functions(xs:anyURI("some.xql"))
)
我尝试了不同的方法来访问 no:some
函数,但没有锁定。我只是写了非常糟糕的查询,错误地使用了 xqsuite,还是这是一个错误?
您的 some.xql
是一个 主模块 ,您只能在 库模块 .[=17 中导入和测试函数=]
考虑重构为库模块,例如 no.xqm
:
xquery version "3.0";
module namespace no="http://none";
declare namespace test="http://exist-db.org/xquery/xqsuite";
declare
%test:arg('1')
%test:assertEquals('2')
function no:something ($num as xs:string?) as xs:string {
$num + 1
};
您的应用主模块some.xq
:
xquery version "3.0";
import module namespace no="http://none" at "no.xqm";
xmldb:store('/db/data/', 'two.xml',<root>{no:something(1)}</root>
你的测试运行器主模块tests.xq
:
xquery version "3.0";
import module namespace test="http://exist-db.org/xquery/xqsuite"
at "resource:org/exist/xquery/lib/xqsuite/xqsuite.xql";
test:suite(
inspect:module-functions(xs:anyURI("no.xqm"))
)