Re: Re: Re: Using XSL for a "world records" table
"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
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format