2011-12-22 36 views
3

我一直在嘗試國際化一些XSLT和得到它的使用屬性文件。 我得到的地方,我覺得我有一些代碼應該工作,但我得到的是我發現這裏的原因的錯誤點: Java/XSLT: Cannot find a matching 1-argument function是「Java的:類的標準使用XSL的命名空間?

我,因爲它說,使用撒克遜(版本8),並試圖確定是否使用如下代碼: xmlns:lcl="java:com.mycode.localisation.LocaleUtilities" xmlns:resource="java:java.util.ResourceBundle.getBundle('taskStrings', lcl:getCurrentLocale())"> ...

是「標準」XSL的一部分,或者僅由某些解析器支持的非官方/專有擴展。我需要知道這一點,因爲我需要提供所使用的解析器一定程度的靈活性,而只能證明不支持撒克遜如果不支持這一點,因爲它是不完全符合標準。

它引起的錯誤是這樣的方式

Cannot find a matching 1-argument function named 
{java:java.util.ResourceBundle.getBundle('taskStrings', lcl:getCurrentLocale())}getString() 
+1

進一步深挖表明撒克遜不支持我想要什麼,以及存在的問題進行了使用實例方法,這會導致併發症出現。我現在重新使用靜態方法調用來完成所有任務,以保持簡單並且一切正常。 – user1111284 2011-12-22 15:35:09

+2

正如您所建議的那樣,java:x.y.z URI格式不是一種標準,而是由幾個基於Java的XSLT處理器用於定義與Java方法綁定的約定。從一個處理器到另一個處理器的詳細規則差別很大 – 2011-12-22 17:56:03

+1

如果您在這裏找到解決方案,您可以爲自己的問題添加答案。 – 2012-03-15 21:27:27

回答

1

如果你想國際化您的XSLT,您可以使用鍵()函數和<xsl:key>元素。您可能需要將您的屬性文件轉換爲XML。

當然,如果你絕對需要離開你的屬性是files,你可以寫你自己的URIResolver與撒克遜人可能會讀一個屬性文件,併爲XML返回它的XSL。

0

進一步深挖表明撒克遜不支持我想要什麼,以及存在的問題進行了使用實例方法,這會導致併發症出現。我現在只用靜態的方法調用讓事情變得簡單重新做的一切,一切工作