我有一个XQuery函数。
declare function local:helloWorld($param1 as xs:string, $param2 as xs:string) as element() {
现在,我想说是否可以计算传递给我的函数的参数。
有可能吗?
提前致谢
答案 0 :(得分:1)
在标准XQuery中,这是不可能的。
然而,即将推出的下一个Zorba版本(版本2.0)将包括一个内省库,它可以完全满足您的需求。例如,在当前svn版本的Zorba上有以下查询:
import module namespace sctx = "http://www.zorba-xquery.com/modules/introspection/sctx";
declare function local:helloWorld($param1 as xs:string, $param2 as xs:string) as xs:string {
fn:concat($param1, $param2)
};
sctx:function-arguments-count(xs:QName("local:helloWorld"))
将返回“2”(如预期的那样)。还有一个模块可以进行反射,因此您可以完全动态地构建函数调用。但是你支付的价格当然是这个代码不再可以移植到其他XQuery引擎了。
答案 1 :(得分:0)
没有函数来计算传递给函数的参数数量。参数数量由函数声明确定。它不能根据输入而改变。
这article解释了函数。