RE: [xsl] How do you get the most recent element?

Subject: RE: [xsl] How do you get the most recent element?
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Fri, 9 Feb 2001 18:09:06 -0000
> I need to display the most recent "note". I did something
> like shown below.
> I'm concerned that the match will go through all the sorted notes even
> though I
> only want the most recent. Thought there might be a more
> elegant solution out there.
>   <xsl:apply-templates select="note">
>     <xsl:sort order="descending" select="time"/>
>   </xsl:apply-templates>
> <xsl:template match="note">
>   <xsl:if test="position()=1">
>     <xsl:value-of select="text"/>
>   </xsl:if>
> </xsl:template>
Actually, the sort will probably take longer than processing the sorted list
and discarding elements you're not interested in, so for an improvement you
want to avoid the sort.

If you want to do a single pass through the data, it's a case for a
recursive template or an extension function such as saxon:highest().

Mike Kay

 XSL-List info and archive:

Current Thread