在XQuery中,如何获取导入模块中的函数列表?

在XQuery中,如何获取导入模块中的函数列表?,xquery,marklogic,Xquery,Marklogic,我在一个模块中有一个要顺序调用的函数列表。此时,我还必须保留一个函数名列表,然后使用fn:function lookup查看它是否存在,然后使用xdmp:apply和xdmp:function调用该函数 有什么方法可以获得导入模块中列出的函数序列吗?我自己从未尝试过,但我认为您可以用找到它,并通过xdmp:function-module()过滤完整的列表。思想认为,很可能是功能的顺序没有得到维持,以防这很重要 我还想知道你为什么要费这么大的劲来做这件事。听起来更像是在尝试运行一些测试之类的 嗯

我在一个模块中有一个要顺序调用的函数列表。此时,我还必须保留一个函数名列表,然后使用
fn:function lookup
查看它是否存在,然后使用
xdmp:apply
xdmp:function
调用该函数


有什么方法可以获得导入模块中列出的函数序列吗?

我自己从未尝试过,但我认为您可以用找到它,并通过
xdmp:function-module()
过滤完整的列表。思想认为,很可能是功能的顺序没有得到维持,以防这很重要

我还想知道你为什么要费这么大的劲来做这件事。听起来更像是在尝试运行一些测试之类的

您可以使用返回所有范围内函数的列表,然后筛选以选择绑定到导入模块的命名空间的方法:

import module namespace admin = "http://marklogic.com/xdmp/admin" at "/MarkLogic/admin.xqy";
xdmp:functions() ! fn:function-name(.)[fn:namespace-uri-from-QName(.) = 'http://marklogic.com/xdmp/admin'] 

我将函数用作记录中节点的有序列表。也许可以用其他几种方法(比如xslt)来完成,但这就是我在这个代码迭代中所处的位置。在这种情况下,请确保xdmp:functions()以正确的顺序返回它们,或者找到一种方法来确保这一点。它们返回的顺序没有定义,可能不稳定。结果证明这很有效,然后我发现使用它的函数是在spawn函数中调用的。有没有办法将“导入模块”添加到xdmp:spawn函数中?没有它,xdmp:functions只能找到内置函数。制定了一个解决方案-将函数包装在xdmp:eval中的spawn函数中。这允许我们重新导入库并重新定义xdmp:functions的作用域。