2011-12-22 64 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

进一步深挖表明撒克逊不支持我想要什么,以及存在的问题进行了使用实例方法,这会导致并发症出现。我现在只用静态的方法调用让事情变得简单重新做的一切,一切工作