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: [EMAIL PROTECTED] From: neander <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED] Templates: [EMAIL PROTECTED] Transformer: [EMAIL PROTECTED] <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: [EMAIL PROTECTED] Templates: [EMAIL PROTECTED] Transformer: [EMAIL PROTECTED] <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.