2009-11-03 17 views
17

Mam plik xsl, w którym muszę użyć parametrów z zewnętrznego źródła. Używam Java i mój kod wygląda mniej więcej tak:Transformacja XSL w Javie z parametrami

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

jednak na wyjątek na 2. linii - zmiennej lub parametru „nazwa_zmiennej” jest niezdefiniowany. Zdaję sobie sprawę, że XSL jest skompilowany i prawdopodobnie skompilowany podczas tworzenia transformatora.

Jak przekazać parametry do mojej transformacji? W jaki sposób należy użyć metody setParameter?

+0

Sprawdź dwa razy, aby upewnić się, orkisz z ParameterName prawidłowo i że sprawa pasuje co jest zadeklarowane w XSLT. –

Odpowiedz

43

Jeśli przekazać parametr jak:

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

parametr może być odebrany przez transformacji: odpowiedź

<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, jeśli parametr ma jakąkolwiek wartość w xsl zostanie zignorowany, a wysłany przez Javę będzie miał pierwszeństwo. – SoulMan

2

RSP była na miejscu. Dzięki. Po prostu chcę dodać, że nie można przekazać parametru do zmiennej w ten sam sposób (ustawiając parametry przez Java TransformerFactory).

Popełniłem błąd myślenia zmiennych i params były wymienne :)

+1

Oto dobra odpowiedź na temat różnic między 'param' i' variable': http://stackoverflow.com/a/11854157/1813669 – Scadge