|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] 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
|

Cart








