Transformacja XSL w Javie z parametrami

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

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

Jednak wyjątek jest wyrzucany w drugiej linii - zmienna lub parametr 'nazwa_ zmienna' jest niezdefiniowany. zdaję sobie sprawę, że XSL jest kompilowany i prawdopodobnie jest kompilowany podczas tworzenia transformatora.

Jak przekazać parametry mojej transformacji? W jaki sposób należy stosować metodę setParameter?

 25
Author: Anirudh, 2009-11-03

2 answers

Jeśli podasz parametr taki jak:

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

Parametr można odczytać transformacją:

<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" />
 57
Author: rsp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-03 14:14:25

Odpowiedź Rsp była trafna. Dzięki. Chcę tylko dodać, że nie można przekazać parametru do zmiennej w ten sam sposób (ustawiam parametry przez TransformerFactory Javy).

Popełniłem błąd myśląc, że zmienne i paramy są wymienne:)

 2
Author: TinyRacoon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-22 09:00:54