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