0

有没有一种通用的方法来调用从序列中获得的参数的 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_user_func_array('functionname', $args)
4

1 回答 1

2

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

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

于 2012-08-10T20:24:14.440 回答