[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Usage of key inside a for loop of a RTF does not work properly


Subject: Re: [xsl] Usage of key inside a for loop of a RTF does not work properly
From: "Ranjan K. Baisak" <ranjanbaisak@xxxxxxxxx>
Date: Wed, 5 Jan 2005 20:40:48 -0800 (PST)

> But again, if you can tell us how you construct
> $levelreference, we might be able to suggest an even
> 
> better solution, preventing use of fragments at all
> perhaps...
$levelreference is an RTF which I populated by using
xsl:for-each on a key. My XML is very complex so I am
using lots of keys to get the appropriate result.
Again also I can see some performance degradation
because of usage of lost of xsl:for-each. Anyway I
will look into the performance later.
Thanks for your help.

regards,
Ranjan

--- Geert Josten <Geert.Josten@xxxxxxxxxxx> wrote:

> > I think I am  quite clear now. SO I can think that
> As
> > I am inside for loop of RTF so key selects nodes
> in
> > RTF which does not produce any result.
> 
> Taking a more close look at what you mailed earlier,
> I noticed the definition of xsl:key. Though, 
> the definition of $levelreference is missing, but I
> assume that is a reference to a document fragment.
> 
> Yes, the problem in your case is that you switch
> context from input doc to fragment with your outer 
> for-each loop. Doing so makes the key work on the
> fragment instead of the input doc. Your lines 
> above are on the right track...
> 
> I assume that the key you specified is supposed to
> work on the input doc rather than the fragment. 
> Well, you could use the following trick to switch
> back context to the input doc:
> 
> <xsl:variable name="current" select="." />
> 
> <!-- outer loop -->
> <xsl:for-each select="node-set($levelreference)/*">
>    <xsl:variable name="id"  select="@levelref" />
> 
>    <!-- here comes the trick :P -->
>    <xsl:for-each select="$current">
> 
>      <!-- compressed inner loop to one value-of
> statement -->
>      <xsl:value-of select="key('professionlevelkey',
> $id)/@value" />
> 
>    </xsl:for-each>
> 
> </xsl:for-each>
> 
> But again, if you can tell us how you construct
> $levelreference, we might be able to suggest an even
> 
> better solution, preventing use of fragments at all
> perhaps...
> 
> Cheers
> 
> 



		
__________________________________ 
Do you Yahoo!? 
Yahoo! Mail - 250MB free storage. Do more. Manage less. 
http://info.mail.yahoo.com/mail_250


Current Thread
Keywords
xml