[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: Keeping a map in my XSL
Heres the thing though. I can't have the map in my source XML, I want it in my source XSLT. Is there a way to set the map in an XML document and include it in my Source XSL and then Reference it in the XSLT using the key() function? -Thanks, Kevin -----Original Message----- From: andrew welch [mailto:andrew.j.welch@xxxxxxxxx] Sent: Tuesday, September 13, 2005 12:02 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: Keeping a map in my XSL On 9/13/05, Kevin L. Cobb <kevin.cobb@xxxxxxxxxxxx> wrote: > I want to be able to set a variable that is retreived from my XML I am > parsing to a mapped values. For example, lets say I have an XML map > that looks like this: > > <map> > <key>12345</key><value>abcde</key> > <key>78910</key><value>lmnop</value> > </map> > > My source XML has the value '12345' in a certain field. I retreive the > field as usual in XSL and then I want to get the mapped value of this > field. The map above is "included" in my XSL. Is there a best way to > do this in XSL? yes, first restructure your map as associating a key and value by position is a bad idea, much better to use attributes: <map> <key name="12345" value="abcde"/> <key name="78910" value="lmnop"/> </map> then define a key to return a value for a given name: <xsl:key name="mappings" match="key" use="@name"/> then in xslt 1.0 use: <xsl:variable name="lookup" select="the_name_you_want_lookup"/> <xsl:for-each select="$map"> <xsl:value-of select="key('mappings', $lookup)/@value"/> </xsl:for-each> in 2.0 you don't have the hassle of switching the context node because key() can take it as the third argument: <xsl:value-of select="key('mappings', the_name_you_want_to_lookup, $mappings)/@value"/> cheers andrew
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|