带有参数的 Java 中的 XSL 转换

2022-09-01 13:53:53

我有一个xsl文件,我需要使用来自外部源的参数。我正在使用Java,我的代码看起来像这样:

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer xsltTransformer = transformerFactory.newTransformer(xsltSource);
xsltTransformer.setParameter(parameterName, parameterValue);

但是,在第二行引发异常 - 变量或参数“variable_name”未定义。我意识到XSL是编译的,并且可能是在创建转换器时编译的。

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


答案 1

如果传递如下参数:

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" />

答案 2

rsp的答案是正确的。谢谢。只是想补充一点,你不能以同样的方式将参数传递给变量(我通过Java的TransformerFactory设置参数)。

我犯了一个错误,认为变量和参数是可以互换的:)


推荐