Subject: Re: [xsl] Lookup tables From: "James A. Robinson" <jim.robinson@xxxxxxxxxxxx> Date: Thu, 15 Mar 2007 18:43:46 -0700 |
> ancestor::node()//LookUp/Parameter[@key = 'key_to_lookup']. In XSLT 2.0 it is simple to do this using the form of fn:key which allows you to pass in a context node. In XSLT 1.0 I've seen people use this trick of changing context through for-each and document(''): <xsl:stylesheet version="1.0" xmlns:myns="uri.my.namespace" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" /> <xsl:key match="myns:data" name="myns:table-lookup" use="@key" /> <xsl:variable name="myns:lookup-table"> <myns:data key="a" value="1.0" /> <myns:data key="b" value="2.0" /> <myns:data key="c" value="3.0" /> </xsl:variable> <xsl:template match="/"> <xsl:variable name="input" select="'b'" /> <xsl:variable name="result"> <xsl:for-each select="document('')"> <xsl:value-of select="key('myns:table-lookup', $input)/@value"/> </xsl:for-each> </xsl:variable> <xsl:value-of select="concat($input, ' = ', $result)" /> </xsl:template> </xsl:stylesheet> In XSLT 2.0 you don't have to pull any tricks: <xsl:stylesheet version="2.0" xmlns:myns="uri.my.namespace" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:key name="myns:table-lookup" match="myns:data" use="@key" /> <xsl:variable name="myns:lookup-table"> <myns:data key="a" value="1.0" /> <myns:data key="b" value="2.0" /> <myns:data key="c" value="3.0" /> </xsl:variable> <xsl:template match="/"> <xsl:variable name="input" select="'b'" /> <xsl:variable name="result" select="key('myns:table-lookup', $input, $myns:lookup-table)/@value"/> <xsl:value-of select="concat($input, ' = ', $result)" /> </xsl:template> </xsl:stylesheet> Both result in 'b = 2.0' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - James A. Robinson jim.robinson@xxxxxxxxxxxx Stanford University HighWire Press http://highwire.stanford.edu/ +1 650 7237294 (Work) +1 650 7259335 (Fax)
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Lookup tables, Joe Fawcett | Thread | Re: [xsl] Lookup tables, James A. Robinson |
Re: [xsl] Lookup tables, Kamal Bhatt | Date | Re: [xsl] Lookup tables, Joe Fawcett |
Month |