我有以下模块
xquery version "1.0-ml";
declare variable $datasets as map:map external;
...
我想打电话给我,所以我这样做xdmp:invoke
...
let $update := xdmp:invoke("/app/lib/my-module.xqy", (xs:QName("datasets"), $map), <options xmlns="xdmp:eval">
<modules>{xdmp:modules-database()}</modules>
</options>)
...
$map
的类型为map:map。
运行此操作会出现以下错误
[1.0-ml] XDMP-ARG: xdmp:invoke("/app/lib/20140527-0916-copy-y-axis-labels-from-chart-to-dataset-...", fn:QName("", "datasets"), <options xmlns="xdmp:eval"><modules>0</modules></options>) -- Invalid argument
为什么?
答案 0 :(得分:2)
很难确定您发布的有限代码示例,但我认为您的$map
变量绑定到空序列({{1的粗略模拟)在XPath / XQuery中)。
我创建了以下主模块,它只返回外部变量null
:
$datasets
按如下方式调用它可以正常工作:
xquery version "1.0-ml";
declare variable $datasets as map:map external;
$datasets
这导致&#34;无效参数&#34;错误:
let $map := map:entry("key", "value")
return
xdmp:invoke("/test.xqy",
(xs:QName("datasets"), $map),
<options xmlns="xdmp:eval">
<modules>{xdmp:modules-database()}</modules>
</options>)
XQuery展平序列(它们不像s表达式那样嵌套),所以当 let $map := ()
return
xdmp:invoke("/test.xqy",
(xs:QName("datasets"), $map),
<options xmlns="xdmp:eval">
<modules>{xdmp:modules-database()}</modules>
</options>)
是空序列时,$map
元素变为{{1}的值param,这是外部变量的无效值。
更新:Doh! @ mblakele在下面的评论解释了错误条件......
TL; DR:<options/>
不是$datasets
的实例。