2009-11-03 7 views
17

J'ai un fichier xsl où j'ai besoin d'utiliser des paramètres d'une source externe. J'utilise Java et mon code ressemble à ceci:Transformation XSL en Java avec paramètres

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

Cependant, une exception est levée à la 2ème ligne - variable ou un paramètre « variable_name » est pas défini. Je me rends compte que XSL est compilé et est probablement compilé lors de la création du transformateur. Alors, comment transmettre des paramètres à ma transformation? Comment la méthode setParameter est-elle censée être utilisée?

+0

Revérifiez pour vous assurer que vous orthographié correctement le parameterName et que le dossier correspond à ce qui est déclaré dans le XSLT. –

Répondre

43

Si vous passez un paramètre comme:

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

le paramètre peut être repris par la transformation:

<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 le paramètre a une valeur dans le xsl il sera ignoré et celui envoyé par Java aura la priorité – SoulMan

2

La réponse de rsp était sur place. Merci. Je veux juste ajouter que vous ne pouvez pas passer un paramètre à une variable de la même manière (je suis en train de régler les paramètres via TransformerFactory de Java).

J'ai fait l'erreur de variables et params pensée étaient interchangeables :)

+1

Voici une bonne réponse à propos des différences entre 'param' et' variable': http://stackoverflow.com/a/11854157/1813669 – Scadge

Questions connexes