Subject: RE: [xsl] Passing a Map as parameter to XSLT. From: "DEVAL SHAH" <devals9@xxxxxxxxxxx> Date: Sun, 05 Mar 2006 04:08:12 +0000 |
Thank you Deval Shah
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: Sat, 4 Mar 2006 11:07:08 -0000
Try doing
<xsl:template match="/"> <xsl:copy-of select="$XSLTParameter"/>
Then we can see whether the problem is in passing the document to your transformation, or in your use of keys to navigate within the document once it has been passed in. Divide and conquer.
In JAXP, the kinds of object you can pass in as the second argument of setParameter() depend on the XSLT processor you are using. So please let us know the product and product version.
(Actually, in Saxon, it's even more complicated than that. A DOM document will be recognized as a parameter value if the DOM support module saxon8-dom.jar is on your classpath, and it won't be recognized otherwise. DOM support was taken out of the mainstream JAR file because of the difficulties with DOM incompatibility between JDK 1.4 and JDK 1.5)
Michael Kay http://www.saxonica.com/
> -----Original Message----- > From: DEVAL SHAH [mailto:devals9@xxxxxxxxxxx] > Sent: 04 March 2006 00:05 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: RE: [xsl] Passing a Map as parameter to XSLT. > > Hello, > Thank you for the reply. > > I am still not able to access the parameter that I pass to XSLT. > > Let me explain what I want to do. > > I want to pass in key,value pairs to XSLT. I hava a Map > object in Java which > contains this key value pair. I read in some forum that there > is no direct > way to pass this object as a Map so I need to convert it into > xml format. So > I am converting it into a xml format and setting it as the > parameter. I am > using javax.xml.transform.Transformer. I set the parameter as: > transformer.setParameter("XSLTParameter",xmlDoc); > where xmlDoc is some org.w3c.dom.Document object. > > Now in xsl I try to get this parameter using <xsl:param > name="XSLTParameter" > />. > I want to loop through the xml document that I have passed in > XSLTParameter > using some key. > So I define > <xsl:key name="xsltParameterMap" match="/*/map/entry" use="@key"/> > > I Tried to loop in following manner. > > <xsl:for-each select="key('xsltParameterMap','line')"> > ......... > </xsl:for-each> > > XSLT is not going inside this loop. I am sure I am setting > 'line' as one of > the key value in the XML that I am passing as parameter to > the XSLT. So it > should go inside the loop. > > Any help on this ? > > Thanks > Deval > > >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 > >key as > > > > <xsl:key name="xsltParameterMap" match="/*/map/entry" use="@key"/> > > > >(though match="entry" will work equally well) > > > >and then access a value with > > > >key('xsltParameterMap', $requiredValue) > > > >having made sure that $XSLTParameter is the context node. > > > >Michael Kay > >http://www.saxonica.com/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Passing a Map as paramete, Michael Kay | Thread | RE: [xsl] Passing a Map as paramete, Michael Kay |
Re: [xsl] Is letting the browser tr, M. David Peterson | Date | [xsl] Annotations in XSLT, Jesper Tverskov |
Month |