2009-11-03 29 views
17

Tengo un archivo xsl donde necesito usar parámetros de una fuente externa. Estoy usando Java y mi código es como la siguiente:Transformación XSL en Java con los parámetros

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

Sin embargo, se produce una excepción en la segunda línea - 'variable_name' variable o parámetro no está definido. Me doy cuenta de que XSL está compilado y probablemente se compila cuando se crea el transformador.

Entonces, ¿cómo paso los parámetros a mi transformación? ¿Cómo se supone que se usa el método setParameter?

+0

doble para asegurarse de que ha escrito el nombreParámetro correctamente y que el caso coincide con lo que se declara en el XSLT. –

Respuesta

43

Si pasa un parámetro como:

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

el parámetro puede ser recogido por la transformación: Respuesta

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

Great Ans, FYI si el parámetro tiene algún valor en el xsl, se ignorará y el enviado por Java tendrá prioridad – SoulMan

2

de RSP era perfecto. Gracias. Solo quiero agregar que no se puede pasar un parámetro a una variable de la misma manera (estoy configurando parámetros a través de TransformerFactory de Java).

que cometió el error de las variables de pensamiento y params eran intercambiables cheque :)

+1

Aquí hay una buena respuesta sobre las diferencias entre 'param' y' variable': http://stackoverflow.com/a/11854157/1813669 – Scadge

Cuestiones relacionadas