2014-10-07 20 views
0

Can Saxon可以映射下面的擴展函數用下面的varargs調用java靜態方法嗎?Saxon 9是否支持擴展函數中的java可變參數?

XSLT:

<xsl:value-of select="mylib:fun('a', 'b', 'c')"/> 

的Java

public static String fun(String arg1, String... args) { ... } 

我預計撒克遜支持可變參數,但是,我得到

的命名空間URI和本地名稱是公認,但參數的數量是錯誤的

我做錯了什麼?

它似乎能夠識別序列()但我想實現一個函數,它具有零個或多個參數,如標準XPath函數庫中的參數。

謝謝

+0

實際上,只有一個可變參數數量的功能在標準的XPath庫中,concat(),這是一個異常。一般來說,XPath哲學是一個函數是通過它的名字和形式來標識的,而可變參數並不適合那種思維。 – 2014-10-08 08:46:26

回答

0

我想你已經回答了自己的問題:SAXON不支持它。

而且,它是有道理的 SAXON不支持它。 Java可變參數在編譯器中實現;它們不在類文件或字節碼中表示。所有SAXON看到的是接受兩個參數(一個String和一個String[])並返回String的方法。

我不熟悉的SAXON的類型映射的所有細節,但也許你可以通過傳遞一個列表,第二個函數參數實現您的目標:

<xsl:value-of select="mylib:fun('a', ('b', 'c'))"/> 
相關問題