Hi!
Does parameter passing in a template supported with xsltc?

Here is a simple stylesheet:
--
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; xmlns="http://www.w3.org/1999/xhtml";>
<xsl:template match="/">
Hello world!


                <xsl:call-template name="test">
                        <xsl:with-param name="param1">mblelop</xsl:with-param>
                </xsl:call-template>
        </xsl:template>

        <xsl:template name="test">
                <xsl:param name="param1"/>

                param1 = <xsl:value-of select="$param1"/>
        </xsl:template>
</xsl:stylesheet>

--

Now is here a program that makes use of it:

--
                new EnvironmentCheck().checkEnvironment(new 
PrintWriter(System.out));


File xmlSourceFile = new File("test.xml"); Source xmlSource = new StreamSource(xmlSourceFile);

File xsltFile = new File("test.xslt");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document xsltDocument = documentBuilder.parse(xsltFile);
DOMSource xsltDOMSource = new DOMSource(xsltDocument);



TransformerFactory transformerFactory = TransformerFactory.newInstance(); Templates template = transformerFactory.newTemplates(xsltDOMSource);


Result outResult = new StreamResult(System.out); template.newTransformer().transform(xmlSource, outResult);

--


Here is the result of this program:

--
#---- BEGIN writeEnvironmentReport($Revision: 1.23 $): Useful stuff found: ----
version.DOM.draftlevel=2.0fd
java.class.path=webapps\blorp\WEB-INF\classes
version.JAXP=1.1 or higher
java.ext.dirs=C:\Program Files\Java\j2re1.4.2_03\lib\ext
#---- BEGIN Listing XML-related jars in: foundclasses.sun.boot.class.path ----
xalan.jar-path=C:\j2sdk1.4.2_03\lib\endorsed\xalan.jar
xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version
xml-apis.jar-path=C:\j2sdk1.4.2_03\lib\endorsed\xml-apis.jar
xercesImpl.jar-apparent.version=xercesImpl.jar from xerces-2_4
xercesImpl.jar-path=C:\j2sdk1.4.2_03\lib\endorsed\xercesImpl.jar
#----- END Listing XML-related jars in: foundclasses.sun.boot.class.path -----
version.xerces2=Xerces-J 2.4.0
version.xerces1=not-present
version.xalan2_2=Xalan Java 2.5.2
version.xalan1=not-present
version.ant=not-present
java.version=1.4.2_03
version.DOM=2.0
version.crimson=present-unknown-version
sun.boot.class.path=C:\j2sdk1.4.2_03\lib\endorsed\xalan.jar;C:\j2sdk1.4.2_03\lib
\endorsed\xml-apis.jar;C:\j2sdk1.4.2_03\lib\endorsed\xercesImpl.jar;C:\Program F
iles\Java\j2re1.4.2_03\lib\rt.jar;C:\Program Files\Java\j2re1.4.2_03\lib\i18n.ja
r;C:\Program Files\Java\j2re1.4.2_03\lib\sunrsasign.jar;C:\Program Files\Java\j2
re1.4.2_03\lib\jsse.jar;C:\Program Files\Java\j2re1.4.2_03\lib\jce.jar;C:\Progra
m Files\Java\j2re1.4.2_03\lib\charsets.jar;C:\Program Files\Java\j2re1.4.2_03\cl
asses
version.SAX=2.0
version.xalan2x=Xalan Java 2.5.2
#----- END writeEnvironmentReport: Useful properties found: -----
# YAHOO! Your environment seems to be OK.
<?xml version="1.0" encoding="UTF-8"?>


                Hello world!



                param1 = mblelop
--


As you can see, it works fine.

Now I add the system property to use xltc in my program:

                        String key = "javax.xml.transform.TransformerFactory";
                        String value = 
"org.apache.xalan.xsltc.trax.TransformerFactoryImpl";
                        Properties props = System.getProperties();
                        props.put(key, value);
                        System.setProperties(props);

And here is the new result:
--
#---- BEGIN writeEnvironmentReport($Revision: 1.23 $): Useful stuff found: ----
version.DOM.draftlevel=2.0fd
java.class.path=webapps\blorp\WEB-INF\classes
version.JAXP=1.1 or higher
java.ext.dirs=C:\Program Files\Java\j2re1.4.2_03\lib\ext
#---- BEGIN Listing XML-related jars in: foundclasses.sun.boot.class.path ----
xalan.jar-path=C:\j2sdk1.4.2_03\lib\endorsed\xalan.jar
xml-apis.jar-apparent.version=xml-apis.jar present-unknown-version
xml-apis.jar-path=C:\j2sdk1.4.2_03\lib\endorsed\xml-apis.jar
xercesImpl.jar-apparent.version=xercesImpl.jar from xerces-2_4
xercesImpl.jar-path=C:\j2sdk1.4.2_03\lib\endorsed\xercesImpl.jar
#----- END Listing XML-related jars in: foundclasses.sun.boot.class.path -----
version.xerces2=Xerces-J 2.4.0
version.xerces1=not-present
version.xalan2_2=Xalan Java 2.5.2
version.xalan1=not-present
version.ant=not-present
java.version=1.4.2_03
version.DOM=2.0
version.crimson=present-unknown-version
sun.boot.class.path=C:\j2sdk1.4.2_03\lib\endorsed\xalan.jar;C:\j2sdk1.4.2_03\lib
\endorsed\xml-apis.jar;C:\j2sdk1.4.2_03\lib\endorsed\xercesImpl.jar;C:\Program F
iles\Java\j2re1.4.2_03\lib\rt.jar;C:\Program Files\Java\j2re1.4.2_03\lib\i18n.ja
r;C:\Program Files\Java\j2re1.4.2_03\lib\sunrsasign.jar;C:\Program Files\Java\j2
re1.4.2_03\lib\jsse.jar;C:\Program Files\Java\j2re1.4.2_03\lib\jce.jar;C:\Progra
m Files\Java\j2re1.4.2_03\lib\charsets.jar;C:\Program Files\Java\j2re1.4.2_03\cl
asses
version.SAX=2.0
version.xalan2x=Xalan Java 2.5.2
#----- END writeEnvironmentReport: Useful properties found: -----
# YAHOO! Your environment seems to be OK.
<?xml version="1.0" encoding="UTF-8"?>


                Hello world!



                param1 =
--

As you can see, the value of param1 has been lost!
Is it a normal thing, or a bug?

Thank you very much for your help.


BoD

Reply via email to