Subject: RE: [xsl] Passing a Map as parameter to XSLT.|
From: "DEVAL SHAH" <devals9@xxxxxxxxxxx>
Date: Sat, 04 Mar 2006 00:04:38 +0000
Hello, Thank you for the reply.
<xsl:for-each select="key('xsltParameterMap','line')"> ......... </xsl:for-each>
From: "Michael Kay" <mike@xxxxxxxxxxxx> Reply-To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx> Subject: RE: [xsl] Passing a Map as parameter to XSLT. Date: Fri, 3 Mar 2006 22:57:18 -0000
> > I want to pass a java.util.Map object to a XSLT as a parameter.
Why do you want to pass a java.util.Map, and if that's what you want to do, why are you passing an org.w3c.dom.Document?
> Currently the way I am doing is: > 1. Creating an org.w3c.dom.Document object in the format > <x:map> > <entry key="..." value="..."/> > ... > </x:map> > > 2. I have defined a parameter in xslt > <xsl:param name="XSLTParameter" /> > > > Now how do I access this map in the XSLT.
Your application has to tell the XSLT processor to use the document(1) as the value of the parameter(2). The way you do this depends on your processor. Look for a method called setParameter() or addParameter().
Then you access the parameter as $XSLTParameter.
I am not able to access it. > I was trying to use the key function as follows: > > <xsl:key name="xsltParameterMap" match="document('')/*/map/entry" > use="@key"/> >
A key might be useful to find an entry within your map, but it isn't going
to help you access the map. Once you've loaded the document you can define a
<xsl:key name="xsltParameterMap" match="/*/map/entry" use="@key"/>
(though match="entry" will work equally well)
and then access a value with
having made sure that $XSLTParameter is the context node.
Michael Kay http://www.saxonica.com/