我在Java中有一个非常简单的XSLT转换器:
this.transformer = TransformerFactory.newInstance().newTransformer(xsltTransformerSource);
this.transformer.setParameter("testobject", new MyClass());
这是我的XSLT:
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:myclass="com.mycompany.MyClass">
<xsl:param name="testobject" />
<xsl:template match="/">
<html>
<p><xsl:value-of select="myclass:myMethod($testobject)"/></p>
</html>
</xsl:template>
</xsl:stylesheet>
此转换失败并显示错误:
javax.xml.transform.TransformerConfigurationException: Cannot find external method 'com.myCompany.MyClass.myMethod' (must be public).
但是,当我在XSLT中实例化一个MyClass时,它可以工作!
即
<p><xsl:value-of select="myclass:myMethod(myclass:new())"/></p>
我也可以毫无问题地传递字符串参数。我在做什么有什么不对吗?知道如何让它运作吗?
我正在使用Xalan来转换xslt