通常当我在XSLT中工作时,我创建一个主要由导入组成的主文件.我保持每个导入文件都很小,以便我更容易维护.
我正在尝试在XQuery(在MarkLogic中)做同样的事情,但我无法按照我希望的方式工作.
这是我希望能够做到的:
main.xqy:
xquery version "1.0-ml";
module namespace summit = "http://example.com/summit";
import module "http://example.com/summit" at "/ext/variables.xqy";
import module "http://example.com/summit" at "/ext/utils.xqy";
Run Code Online (Sandbox Code Playgroud)
variables.xqy:
xquery version "1.0-ml";
module namespace summit = "http://example.com/summit";
declare variable $BASEURL as xs:string := "https://example.com/v1";
Run Code Online (Sandbox Code Playgroud)
utils.xqy:
xquery version "1.0-ml";
module namespace summit = "http://example.com/summit";
declare function summit:baseUrl() {
let $url := $BASEURL
return $url
};
Run Code Online (Sandbox Code Playgroud)
然后使用以下代码在查询控制台中调用它:
xquery version "1.0-ml";
import module namespace summit = "http://example.com/summit" at "/ext/main.xqy";
summit:baseUrl()
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[1.0-ml] XDMP-UNDVAR: (err:XPST0008) Undefined variable $BASEURL
Stack Trace …Run Code Online (Sandbox Code Playgroud)