Xquery 使用序列中的参数调用函数?

Xquery 使用序列中的参数调用函数?,xquery,Xquery,有没有一种通用的方法可以使用从序列中获取的参数调用xquery函数 例如,我可以这样做: let $dateandtime := (xs:date('2006-08-15'),xs:time('12:30:45-05:00')) return fn:dateTime($dateandtime[1], $dateandtime[2]) 但是有没有一种方法可以调用fn:dateTime,而不显式地指定所有参数,只提供序列?(我意识到这是有限的,因为序列不能嵌套。) 以下是我如何用其他语言实现这一目

有没有一种通用的方法可以使用从序列中获取的参数调用xquery函数

例如,我可以这样做:

let $dateandtime := (xs:date('2006-08-15'),xs:time('12:30:45-05:00'))
return fn:dateTime($dateandtime[1], $dateandtime[2])
但是有没有一种方法可以调用
fn:dateTime
,而不显式地指定所有参数,只提供序列?(我意识到这是有限的,因为序列不能嵌套。)

以下是我如何用其他语言实现这一目标的示例:

  • python:
    functionname(*args)
  • javascript:
    functionname.apply(null,args)
  • php:
    call\u user\u func\u数组('functionname',$args)

目前,在XQuery中无法做到这一点。与其他类型化语言(如Java)类似,函数签名的赋值通常发生在编译时。由于在评估查询之前,序列中的项数可能未知,因此在许多情况下,静态选择正确的函数签名会失败(一般注意:一个函数可能有多个函数签名,每个签名可能包含不同数量的参数)


但是,Java提供了反射包,可以在运行时动态访问和调用函数。XQuery 3.0的新的高阶功能可用于引入另一个
apply($f as function(*)、$s as item()*)
函数。如果您认为这会有所帮助,则可能是请求此类功能的最佳平台。

不清楚函数签名查找将如何与动态函数调用交互。说得好。