|
View:
New views
2 Messages
—
Rating Filter:
Alert me
|
|
|
How to pass java.util.Map instance as a parameter to a XSLTStylesheetHi,
Apparently, Xalan (the one bundled with JDK 6 at-least) complains when a java.util.Map is passed as a parameter to an XSLT stylesheet. Assuming, I have a snippet of code as: Map inputparam = new HashMap(); inputparam.put("greeting", "hi there"); transformer.setParameter("inputparam", inputparam); ... transformer.transform(...); and I have a simple XSLT that attempts to get the key 'greeting' from this <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="xalan://java.util.HashMap" extension-element-prefixes="map"> <xsl:param name="inputparam" /> <xsl:template match="/"> <xsl:variable name="greeting" select="map:get($inputparam, 'greeting')" /> <greeting><xsl:value-of select="greeting"/></greeting> </xsl:template> </xsl:stylesheet> I obtain the following error: ERROR: 'Cannot find external method 'java.util.HashMap.get' (must be public).' FATAL ERROR: 'Could not compile stylesheet' javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:825) at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:614) at xalanxslttest.ExecuteXslt.main(ExecuteXslt.java:36) Is there a way to solve this? Is this supported? All help/advice appreciated! Thanks & Regards, Vishal |
|
|
Re: How to pass java.util.Map instance as a parameter to a XSLTStylesheetVishal,
Xalan in the JDK is a compiler (XSLTC) and as such it tries to resolve as much as it can statically. As a result, there are some limitations. The discussion and resolution in [1] may help. -- Santiago [1] http://issues.apache.org/jira/browse/XALANJ-1485 On Nov 2, 2009, at 7:21 AM, Javalkar, Vishal wrote: > Hi, > > Apparently, Xalan (the one bundled with JDK 6 at-least) complains > when a java.util.Map is passed as a parameter to an XSLT stylesheet. > > Assuming, I have a snippet of code as: > > Map inputparam = new HashMap(); > inputparam.put("greeting", "hi there"); > transformer.setParameter("inputparam", inputparam); > ... > transformer.transform(...); > > and I have a simple XSLT that attempts to get the key 'greeting' > from this > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:map="xalan://java.util.HashMap" > extension-element-prefixes="map"> > > <xsl:param name="inputparam" /> > > <xsl:template match="/"> > <xsl:variable name="greeting" > select="map:get($inputparam, 'greeting')" /> > <greeting><xsl:value-of select="greeting"/></greeting> > </xsl:template> > </xsl:stylesheet> > > I obtain the following error: > > ERROR: 'Cannot find external method 'java.util.HashMap.get' (must > be public).' > FATAL ERROR: 'Could not compile stylesheet' > javax.xml.transform.TransformerConfigurationException: Could not > compile stylesheet > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates > (TransformerFactoryImpl.java:825) > at > com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer > (TransformerFactoryImpl.java:614) > at xalanxslttest.ExecuteXslt.main(ExecuteXslt.java:36) > > > Is there a way to solve this? Is this supported? > > All help/advice appreciated! > Thanks & Regards, > Vishal > |
| Free embeddable forum powered by Nabble | Forum Help |