[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: How do you get the most recent element?

Subject: Re: How do you get the most recent element?
From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx>
Date: Tue, 13 Feb 2001 09:39:10 +0000
xsl display most recent
Hi Tom,

> 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.

Another solution is to use just an XPath to get what you want. The
most recent note is the one such that no other notes have a date
greater than this one.  You can express this as:

  note[not(../note/date &gt; date)][1]

And thus just use:

  <xsl:value-of select="note[not(../note/date &gt; date)][1]/text" />

to get the text of the most recent note rather than applying templates
or sorting or recursing or whatever.

However, this is probably an even worse solution for large data sets
than the 'sort and pick first' solution. A good recursive solution
would be:

   <!-- apply templates to only the first note -->
   <xsl:apply-templates select="note[1]" />

...

<xsl:template match="note">
   <!-- find the next note that's more recent than this one -->
   <xsl:variable name="next"
                 select="following-sibling::note
                           [date &gt; current()/date][1]" />
   <xsl:choose>
      <xsl:when test="$next">
         <!-- if there is a more recent note, apply templates to it
              -->
         <xsl:apply-templates select="$next" />
      </xsl:when>
      <xsl:otherwise>
         <!-- otherwise give the value of the text of this one -->
         <xsl:value-of select="text" />
      </xsl:otherwise>
   </xsl:choose>
</xsl:template>

I hope that helps,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.