You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-users@xalan.apache.org by George Tsopouridis <gt...@gmail.com> on 2008/10/29 13:54:21 UTC
Re: Transformer.setParameter does not work with 2.7.0
hello i need a help,
i have tha same problem and i cannot pass the parameters to .xslt
transformation.
internal Xalan-Version: Xalan Java 2.6.0
external Xalan-Version: Xalan Java 2.7.0
internal Xerces-Version: Xerces-J 2.6.2
external Xerces-Version: Xerces-J 2.7.1
I am using java 1.6.0.1.
What can i do exactly;;
Thanks again
neander wrote:
>
> Hi,
>
> thank you :handshake:. Now it works fine with the latest version of xalan.
> The confusing thing was that it was working with the java provided
> xalan-version (e.g. with the Systemproperty set to the com.sun. ...
> package).
>
> It was a hard and long day ;)) .....
>
> Dirk
>
>
>
>
> Kevin Cormier-2 wrote:
>>
>> Hi Dirk,
>>
>> You can only set top-level parameters through this interface. If you
>> move
>> your xsl:params above the xsl:template, it should work.
>>
>> Kevin Cormier
>> Software Developer, XSLT Development
>> IBM Toronto Lab, D1-435
>> E-mail: kcormier@ca.ibm.com
>>
>>
>>
>> From:
>> neander <di...@hotmail.com>
>> To:
>> xalan-j-users@xml.apache.org
>> Date:
>> 11/20/2007 06:14 AM
>> Subject:
>> Transformer.setParameter does not work with 2.7.0
>>
>>
>>
>>
>> Hi, I hope it is an easy one ...
>>
>> I try to pass a parameter to a xslt-transformation by using the
>> setParameter-method of the javax.xml.transform.Transformer class.
>> In my project i enhanced the classpath with the latest xalan (2.7.0) and
>> xerces (2.9.0) versions.
>>
>> My Testclass:
>>
>> public class Test
>> {
>> public static void main(String[] args) throws Exception
>> {
>> System.out.println("internal Xalan-Version: " +
>> com.sun.org.apache.xalan.internal.Version.getVersion());
>> System.out.println("external Xalan-Version: " +
>> org.apache.xalan.Version.getVersion());
>> System.out.println("internal Xerces-Version: " +
>> com.sun.org.apache.xerces.internal.impl.Version.getVersion());
>> System.out.println("external Xerces-Version: " +
>> org.apache.xerces.impl.Version.getVersion());
>>
>> TransformerFactory transformerFactory =
>> TransformerFactory.newInstance();
>> System.out.println("Factory: " + transformerFactory);
>>
>> URIResolver resolver = new URIResolver()
>> {
>>
>> public Source resolve(String href, String base) throws
>> TransformerException
>> {
>> return new StreamSource(Test.class.getResourceAsStream("/" +
>> href));
>> }
>>
>> };
>> if (resolver != null)
>> {
>> transformerFactory.setURIResolver(resolver);
>> }
>> String xsltTemplate = "Template.xslt";
>> InputStream resourceAsStream =
>> Test.class.getResourceAsStream(xsltTemplate);
>> Templates template = transformerFactory.newTemplates(new
>> StreamSource(resourceAsStream));
>> System.out.println("Templates: " + template);
>>
>> Transformer transformer = template.newTransformer();
>> transformer.setParameter("hans", "franz");
>> transformer.setParameter("kurt", Boolean.TRUE);
>> transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
>> transformer.setOutputProperty(OutputKeys.METHOD, Method.HTML);
>> System.out.println("Transformer: " + transformer);
>>
>>
>> StringWriter writer = new StringWriter();
>> Result outputTarget = new StreamResult(writer);
>> StringReader reader = new StringReader("<?xml version=\"1.0\"
>> encoding=\"ISO-8859-1\"?><Kurzprofil></Kurzprofil>");
>> transformer.transform(new StreamSource(reader), outputTarget);
>>
>> System.out.println(writer);
>> }
>>
>> }
>>
>>
>> My XSLT-File (Template.xslt):
>>
>> <?xml version="1.0" encoding="ISO-8859-1"?>
>> <xsl:stylesheet version="2.0"
>> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>> <xsl:output method="html" version="1.0" encoding="ISO-8859-1"
>> omit-xml-declaration="yes" standalone="yes" indent="yes" />
>>
>>
>> <xsl:template match="/Kurzprofil">
>> <xsl:param name="hans" />
>> <xsl:param name="kurt" />
>>
>> <html>
>> <body>
>> <h1>Param Hans:<xsl:value-of select="$hans"/>"</h1>
>> <h1>Param Kurt:<xsl:value-of select="$kurt"/>"</h1>
>> <xsl:if test="$hans = 'franz'"><strong>Gotcha
>> Hans!</strong></xsl:if><br/>
>> <xsl:if test="$kurt = 'true'"><strong>Gotcha
>> Kurt!</strong></xsl:if>
>> </body>
>> </html>
>> </xsl:template>
>> </xsl:stylesheet>
>>
>>
>> When i run the Test-Application I get the following output:
>>
>> internal Xalan-Version: Xalan Java 2.6.0
>> external Xalan-Version: Xalan Java 2.7.0
>> internal Xerces-Version: Xerces-J 2.6.2
>> external Xerces-Version: Xerces-J 2.9.0
>> Factory: org.apache.xalan.processor.TransformerFactoryImpl@1fdc96c
>> Templates: org.apache.xalan.templates.StylesheetRoot@1989f84
>> Transformer: org.apache.xalan.transformer.TransformerImpl@146c1d4
>> <html>
>> <body>
>> <h1>Param Hans:"</h1>
>> <h1>Param Kurt:"</h1>
>> <br>
>> </body>
>> </html>
>>
>>
>> Obviously I didn't get the parameter-values and because I get
>> org.apache.xalan.*-classes for the processing i am using the 2.7.0 Xalan
>> Version.
>> When I'm using the interal (JDK 1.5_04 provided Xalan/Xerces-Version) by
>> adding the following System-Property
>>
>> System.setProperty(TransformerFactory.class.getName(),
>> "com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");
>>
>> I get the following output:
>>
>> internal Xalan-Version: Xalan Java 2.6.0
>> external Xalan-Version: Xalan Java 2.7.0
>> internal Xerces-Version: Xerces-J 2.6.2
>> external Xerces-Version: Xerces-J 2.9.0
>> Factory:
>> com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl@15c7850
>> Templates:
>> com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl@b8c8e6
>> Transformer:
>> com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl@dda25b
>> <html>
>> <body>
>> <h1>Param Hans:franz"</h1>
>> <h1>Param Kurt:true"</h1>
>> <strong>Gotcha Hans!</strong>
>> <br>
>> <strong>Gotcha Kurt!</strong>
>> </body>
>> </html>
>>
>>
>> This means that I'm now using the JDK 1.5_04 provided Versions 2.6 of
>> Xalan
>> and Xerces and that everything is working fine.
>>
>> Does anybody know what the problem with the actual Xalan Version 2.7.0
>> is?
>> Did I miss something??
>>
>> Best regards
>>
>> Dirk
>>
>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/Transformer.setParameter-does-not-work-with-2.7.0-tf4842797.html#a13854910
>>
>> Sent from the Xalan - J - Users mailing list archive at Nabble.com.
>>
>>
>>
>>
>
>
--
View this message in context: http://www.nabble.com/Transformer.setParameter-does-not-work-with-2.7.0-tp13854910p20226439.html
Sent from the Xalan - J - Users mailing list archive at Nabble.com.