如何从外部模块导入外部变量和函数?

时间:2016-04-16 08:36:12

标签: xquery

test2.xqy:

import module namespace myNS = "http://test.org/module1" at "./namespace.xqy";

element test
{

}

namespace.xqy:

module namespace myNS = "http://test.org/module1";

declare variable $myNS:srcDoc:="test2.xml";
declare variable $myNS:defaultXMLNS:="http://www.test.com#";
declare variable $myNS:defaultXMLBase:=$defaultXMLNS;

命令行:

$ basex test2.xqy
Stopped at /Users/jack/Documents/xqy/namespace.xqy, 5/53:
[XPST0008] Undefined variable $defaultXMLNS.

我没有找到关于如何从外部模块导入变量和函数的文档。所以我以直观的方式尝试。该错误表明$defaultXMLNS没有定义。我确实定义了它,但是使用了名称空间前缀。

1 个答案:

答案 0 :(得分:0)

您忘记在作业的右侧定义名称空间:

declare variable $myNS:defaultXMLBase:=$defaultXMLNS;
                                    (:  ^ no namespace defined :)

因此,在默认命名空间中搜索$defaultXMLNS,其中未注册declare variable $myNS:defaultXMLBase:=$myNS:defaultXMLNS; 。改为应用命名空间:

import module namespace myNS = "http://test.org/module1" at "./namespace.xqy";

element test
{
  $myNS:srcDoc
}

如果你这样做,你可以稍后访问这样的值:

angular.module('MODULE_NAME').filter('stripSpaces', function() {
    return function(input) {
        return input.replace(/\&nb\s*sp;/g, '');
    }
}