本文摘自XML经典入门(第5版),原书中代码有误,已改正。
1.函数项:
函数项是函数和它的参数的统称。
例如:可以使用一个函数项 sqrt#1 来表示math:sqrt()这一开平方根函数。
2.高阶函数:
所谓高阶的意思就是参数可以是函数。
编写一个简单的函数:
declare function local:double-root($x as xs:double)
as xs:double
{
2 * math:sqrt($x)
};
local:double-root(9.0)
结果是6。
如果再次需要编写一个local:double-sin($x)或local:double-cos($x)。试想能否通过传递要调用的函数来代替sqrt()呢。结果如下:
declare function local:double-it(
$x as xs:double,
$f as function(xs:double) as xs:double
)as xs:double{
2 * $f($x)
};
local:double-it(9.0, math:sqrt#1)
结果也是6。
现在就可以使用local:double-it()来调用任意一个的函数了。
这种使用函数作为参数的方法允许开发者编写一些特殊的XQuery模块,这些XQuery模块可以通过配置接收不同的函数作为参数,从而来改变模块实现的功能。