2009-11-03 9 views
17

Ho un file xsl in cui ho bisogno di utilizzare i parametri da una fonte esterna. Sto usando Java e il mio codice simile a questa:Trasformazione XSL in Java con parametri

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

Tuttavia, viene generata un'eccezione alla linea 2 - variabile o parametro 'nome_variabile' non è definito. Mi rendo conto che XSL è compilato ed è probabilmente compilato quando viene creato il trasformatore.

Quindi, come posso passare i parametri alla mia trasformazione? Come dovrebbe essere usato il metodo setParameter?

+0

Doppio controllo per assicurarsi che hai digitato l'parameterName correttamente e che il caso corrisponde a ciò che viene dichiarato nel XSLT. –

risposta

43

Se si passa un parametro come:

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

il parametro può essere ritirato dal trasformare: risposta

<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 se il parametro ha qualche valore in xsl verrà ignorato e quello inviato da Java avrà la precedenza – SoulMan

2

di RSP era perfetto. Grazie. Voglio solo aggiungere che non è possibile passare un parametro a una variabile nello stesso modo (sto impostando i parametri tramite TransformerFactory di Java).

ho fatto l'errore di pensare e di variabili params erano intercambiabili :)

+1

Ecco una buona risposta sulle differenze tra 'param' e' variable': http://stackoverflow.com/a/11854157/1813669 – Scadge