2011-06-23 47 views
0

我有一个XQuery函数。XQuery:计算函数的参数

declare function local:helloWorld($param1 as xs:string, $param2 as xs:string) as element() { 

现在,我想说如果有可能计数传递给我的函数的参数。

可能吗?

在此先感谢

+1

是的,这是可能的,计数是2.这可能不是你要求的,所以关于上下文的一些信息将是有用的。 – Gunther

回答

0

有没有函数来计算的传递给函数的参数数量。参数的数量由函数声明确定。它不能根据输入而改变。

这个article解释功能。

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引擎。