Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XSL Transformation in Java with parameters

Tags:

java

xslt

I have a xsl file where i need to use parameters from an external source. I am using Java and my code looks something like this:

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

However, an exception is thrown at the 2nd line - Variable or parameter 'variable_name' is undefined. I realize that XSL is compiled and is probably compiled when the transformer is created.

So, how do i pass parameters to my transformation? How is the setParameter method supposed to be used?

like image 926
Anirudh Avatar asked Nov 03 '09 13:11

Anirudh


2 Answers

If you pass a parameter like:

transformer.setParameter("render_id", "1234"); 

the parameter can be picked up by the transform:

<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" /> 
like image 73
rsp Avatar answered Sep 24 '22 21:09

rsp


rsp's answer was spot on. Thanks. Just want to add that you cannot pass a parameter to a variable in the same way (I am setting parameters via Java's TransformerFactory).

I made the mistake of thinking variables and params were interchangeable :)

like image 28
TinyRacoon Avatar answered Sep 22 '22 21:09

TinyRacoon