2011-06-23 4 views
0

私はXQuery関数を持っています。XQuery:関数の引数を数えよう

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

ここで、私の関数に渡されたパラメータを数えることができるかどうかを言いたいと思います。

が可能ですか?事前

おかげ

+1

はい、可能ですが、数は2です。これはあなたが求めているものではない可能性がありますので、コンテキストに関する情報が役立ちます。 – Gunther

答えて

0

関数に渡されたパラメータの数をカウントする機能はありません。パラメータの数は、関数宣言によって固定されます。入力に応じて変更することはできません。

このarticleは機能を説明しています。

1

標準のXQueryでは不可能です。

しかし、すぐに利用できる次のZorbaリリース(バージョン2.0)には、あなたが望むものを正確に実行するイントロスペクション用のライブラリが含まれます。一例として、ゾルバの現在の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エンジンには移植できません。