[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Keeping a map in my XSL

Subject: RE: Keeping a map in my XSL
From: "Kevin L. Cobb" <kevin.cobb@xxxxxxxxxxxx>
Date: Tue, 13 Sep 2005 15:40:51 -0400
kevin cobb
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

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.