1

我想用 JavaScript 调用 XQuery 函数来从 XML 文件中检索数据。我可以调用这个不从任何文件中读取任何内容的简单函数:

<script type="text/javascript" 
        src="mxqueryjs/mxqueryjs.nocache.js"
        ></script>
<script type="application/xquery">
   module namespace m = "http://www.xqib.org/module";

   declare function m:GetNearestLocations($node as node()+) {
     let $message := "Hello XQuery!"
     return $message

   };
</script>

使用此 JavaScript:

var output = xqib.call(
    'http://www.xqib.org/module',
    'GetNearestLocations',
    center.lat());

返回输出如预期的那样“Hello XQuery!”。

现在我想导入一个数学模块,以便在从 XML 文件读取数据时使用它的一些函数。

这是我所拥有的,但数学模块未导入并导致 XQST0059 错误,指出没有信息位置可以加载具有命名空间“ http://www.w3.org/2005/xpath-functions/math ”的模块:

<script type="text/javascript" 
        src="mxqueryjs/mxqueryjs.nocache.js"
        ></script>
<script type="application/xquery">
   module namespace m = "http://www.xqib.org/module";
   import module namespace math
     = "http://www.w3.org/2005/xpath-functions/math";

   declare function m:GetNearestLocations($node as node()+) {
     let $message := "Hello XQuery!"
     return $message

   };
</script>

奇怪的是,当我使用 Stylus Studio X15 Entreprise Suite 测试导入工作的相同功能时。

重要提示:我在导入或不导入 Math 模块时使用相同的 JavaScript 调用,所以也许我的问题来自那里,但我不知道如何解决这个问题。

如果您还可以指导我一些关于我可以将什么设置为 m:GetNearestLocations 的参数以便我可以将它传递给整数或字符串

非常感谢。

4

1 回答 1

2

现在我想导入一个数学模块,以便在从 XML 文件读取数据时使用它的一些函数。

这听起来很合理。因此,您的第一个任务是找到 XQiB / MXQuery 可以处理的命名空间http://www.w3.org/2005/xpath-functions/math的数学模块的实现,将其安装在您的服务器上,并指向它从模块导入语句,如XQiB 网站上的模块导入示例所示。

或者,您可以决定可以使用http://www.zorba-xquery.com/zorba/math-functions中的数学函数,MXQuery(以及 XQiB)似乎本机支持这些函数。(我在 MXQuery 文档中看到了这一点,XQiB文档中没有看到,所以我想 XQiB 使用旧版本的 MXQuery 有理论上的可能性——但开发团队更有可能只是有更好的事情来处理他们的比其他地方已经记录的文档模块时间。)

于 2013-07-24T21:00:49.390 回答