问题描述
|
我有一个XQuery函数。
declare function local:helloWorld($param1 as xs:string,$param2 as xs:string) as element() {
现在,我想说是否有可能计算传递给我的函数的参数。
有可能吗
提前致谢
解决方法
在标准XQuery中是不可能的。
但是,即将推出的下一个Zorba版本(2.0版)将包括一个用于自省的库,它可以完全满足您的需求。例如,在当前Zorba的svn版本上,执行以下查询:
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引擎中。
, 没有函数可以计算传递给函数的参数数量。参数的数量由函数声明确定。它不能根据输入而改变。
本文介绍了功能。