我一直试图将一些XSLT国际化并让它使用属性文件。 我已经达到了这样的程度,我认为我的代码应该可以工作但是我收到的错误是我找到了原因: Java/XSLT: Cannot find a matching 1-argument function
我说,正如它所说,使用saxon(版本8)并且我正在尝试确定是否使用这样的代码:
xmlns:lcl="java:com.mycode.localisation.LocaleUtilities" xmlns:resource="java:java.util.ResourceBundle.getBundle('taskStrings', lcl:getCurrentLocale())">
...
是“标准”XSL的一部分或仅由某些解析器支持的非官方/专有扩展。我需要知道这一点,因为我需要在使用的解析器中提供一定程度的灵活性,并且只有在不支持saxon的情况下才能证明它是不合理的,因为它不完全符合标准。
它引起的错误就是这个
Cannot find a matching 1-argument function named
{java:java.util.ResourceBundle.getBundle('taskStrings', lcl:getCurrentLocale())}getString()
答案 0 :(得分:1)
如果您正在尝试国际化XSLT,可以使用key()函数和<xsl:key>元素。您可能需要将属性文件转换为XML。
当然,如果你绝对需要保留你的属性文件,你可以用saxon编写自己的URIResolver,它可以读取属性文件并将它以AS xml的形式返回给XSL。
答案 1 :(得分:0)
进一步的挖掘表明,撒克逊确实支持我想要的东西,并且问题是由使用实例方法引起的,这会导致并发症。我现在只使用静态方法调用重新完成所有操作,以保持简单,一切正常