Java中带参数的XSL转换

Java中带参数的XSL转换,java,xslt,Java,Xslt,我有一个xsl文件,需要使用来自外部源的参数。我正在使用Java,我的代码如下所示: TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer xsltTransformer = transformerFactory.newTransformer(xsltSource); xsltTransformer.setParameter(parameterName, parameterVal

我有一个xsl文件,需要使用来自外部源的参数。我正在使用Java,我的代码如下所示:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer xsltTransformer = transformerFactory.newTransformer(xsltSource);
xsltTransformer.setParameter(parameterName, parameterValue);
但是,在第2行引发异常-变量或参数“Variable_name”未定义。我意识到XSL是编译的,并且可能是在创建转换器时编译的


那么,如何将参数传递给转换呢?setParameter方法应该如何使用?

如果传递如下参数:

transformer.setParameter("render_id", "1234");
可以通过变换拾取参数:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:output method="xml" encoding="UTF-8" omit-xml-declaration="yes"/>

<!-- Receives the id of the menu being rendered. -->
<xsl:param name="render_id" />

rsp的回答恰到好处。谢谢 只想补充一点,您不能以相同的方式将参数传递给变量(我通过Java的TransformerFactory设置参数)


我错误地认为变量和参数是可互换的:)

仔细检查以确保参数名称拼写正确,并且大小写与XSLT中声明的内容相匹配,仅供参考,如果该参数在xsl中有任何值,它将被忽略,Java发送的参数将优先于xsl。关于
param
variable
之间的差异,这里有一个很好的答案: