| Subject: Re: [xsl] A general <xsl:key> question. From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Thu, 5 Dec 2002 17:11:49 +0000 | 
Hi Edward,
> Do keys have to be used within a context in which the associated
> nodes exist?
Yes. The context node at the point where you use the key (with the
key() function) has to be a node in the document that you're
searching.
Usually this means that you should create a variable to hold the key
value that you want to search for, then switch into the context of the
document that you want to search in (using <xsl:for-each>) before
using the key.
I can't tell precisely what's going to work with your code, but
something like:
<xsl:key name="PageKey" match="/gnsl:Results/gnsl:Table/gnsl:Row"
         use="((count(preceding-sibling::*) div $RowsPerPage) + 1)" />
<xsl:variable name="results" select="/" />
<xsl:template name="ProcessPageRows">
   <xsl:variable name="PageNum" select="@PageNum" />
   <xsl:variable name="StartRow" select="@StartRow" />
   <xsl:variable name="EndRow" select="@EndRow" />
   <xsl:if test="$NumberOfRows">
      <xsl:for-each select="$results">
        <xsl:apply-templates select="key('PageKey',$PageNum)" />
      </xsl:for-each>
   </xsl:if>
</xsl:template>
You need to set the $results variable to being a node set containing a
single node in the document in which the gnsl:Row elements that you're
interested in are held.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| [xsl] A general <xsl:key> question., Edward L. Knoll | Thread | Re: [xsl] A general <xsl:key> quest, Edward L. Knoll | 
| [xsl] A general <xsl:key> question., Edward L. Knoll | Date | Re: [xsl] A general <xsl:key> quest, G. Ken Holman | 
| Month |