Subject: [xsl] Re: Re: Re: Using XSL for a "world records" table From: "Dimitre Novatchev" <dnovatchev@xxxxxxxxx> Date: Sun, 18 May 2003 13:26:47 +0200 |
"Ryan Heise" <rheise@xxxxxxxxxxxxx> wrote in message news:20030518190113.D12272@xxxxxxxxxxxxxxxxxxxxxx > On Sun, May 18, 2003 at 10:35:18AM +0200, Dimitre Novatchev wrote: > > > <xsl:value-of select="position() + count(/*/record[time < > > current()/time])"/> > > This looks nifty. If you just use the count() idea, keys are not > required: > > <xsl:for-each select="record"> > <xsl:sort data-type="number" select="time"/> > <xsl:apply-templates select="."> > <xsl:with-param name="place" select="1 + count(/*/record[time < current()/time])"/> > </xsl:apply-templates> > </xsl:for-each> > > I also just figured out another approach that just uses keys and not > count: > > <xsl:for-each select="record"> > <xsl:if test="not(preceding-sibling::record/time = time)"> > <xsl:apply-templates select="key('records-by-time', time)"> > <xsl:with-param name="place" select="position()"/> > </xsl:apply-templates> > </xsl:if> > </xsl:for-each> This presupposes that "record" elements are already sorted by "time" in the source xml document. Also the "place" parameter will not select what you want. > > I don't know which way is best, though. I guess whichever way runs the > fastest :-) Usually using keys is much faster, assuming that nodes are referenced more than once. ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Re: Re: Using XSL for a ", Ryan Heise | Thread | RE: [xsl] Using XSL for a "world re, Michael Kay |
Re: [xsl] Re: Re: Using XSL for a ", Ryan Heise | Date | RE: [xsl] extensions and XSLT 2.0, Michael Kay |
Month |