带参数的marklogic调用函数
Posted
技术标签:
【中文标题】带参数的marklogic调用函数【英文标题】:marklogic invoke function with parameters 【发布时间】:2016-06-17 11:11:50 【问题描述】:在xdmp:invoke
的文档中,可以将参数作为第二个参数传递。
对于xdmp:invoke-function
,此选项不可用。有什么解决方法可以实现这一目标吗?
将列表映射到函数很容易。我想要实现的是一种面向方面的功能,它检查成功和失败的内容以及以这种方式调用的任何功能的标准日志消息。比如:
declare function my-mapper ($array, $fn)
(: standard logging and checks :)
for $a in $array
return try
(: now call the function with parameter :)
xdmp:invoke-function($fn($a),<options>...</options>)
catch ($e)
(: standard housekeeping if something goes wrong :)
...
)
my-mapper($array, function ($item)
(: do stuff with item :)
)
有没有什么方法可以在 XQuery 中使用 MarkLogic 实现这一点?
【问题讨论】:
【参考方案1】:一个执行一个主模块而不能访问调用它的上下文,另一个执行一个具有所有上下文的函数。我认为这个想法是您不需要通过调用管道传递参数,因为您可以将它们作为调用xdmp:invoke-function
的一部分传递给函数。你只需要将它包装在一个 0 元的函数中:
xdmp:invoke-function(
function () $fn($a) ,
<options>...</options>)
【讨论】:
以上是关于带参数的marklogic调用函数的主要内容,如果未能解决你的问题,请参考以下文章