This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Using a tree read with document() as a hash-table -- working solution
- To: "'xsl-list at mulberrytech dot com'" <xsl-list at mulberrytech dot com>
- Subject: RE: Using a tree read with document() as a hash-table -- working solution
- From: Kay Michael <Michael dot Kay at icl dot com>
- Date: Wed, 14 Jun 2000 14:41:40 +0100
- Reply-To: xsl-list at mulberrytech dot com
> A quick test showed that the template-call could be avoided by using
>
> <value><xsl:value-of
> select="$packtypetree//ROW[packcode=$packinfopacktype][1]/modu
> ltxt"/></value>
>
> instead. This is just what I needed for a hash-lookup!
>
> On a final note - would a key() make this faster? I still
> have a bit of a problem understanding how it works.
>
Yes, it would be faster, assuming that the lookup table is of some size and
is used fairly often. (In fact, it's not a hash-lookup at all unless you use
a key - it's likely to be a serial search on most processors).
Write
<xsl:key name="packcode" match="ROW" select="packcode"/>
and then replace the above code with
<value>
<xsl:for-each select="$packtypetree">
<xsl:value-of select="key('packcode',$packinfopacktype)[1]/modultxt"/>
</xsl:for-each>
</value>
The for-each is not an iteration, it's needed to establish the current
document for the key() function.
Mike Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list