XQuery: подсчитать аргументы функции - PullRequest
0 голосов
/ 23 июня 2011

У меня есть функция XQuery.

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

Теперь я хочу сказать, возможно ли считать параметры, переданные моей функции.

Возможно?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 25 июня 2011

В стандартном 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.

0 голосов
/ 25 июня 2011

Нет функции для подсчета количества параметров, переданных функции.Количество параметров фиксируется объявлением функции.Это не может измениться в зависимости от входа.

Эта статья объясняет функции.

...