2011-06-23 55 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版本的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引擎。