If you are using XSLT 2.0, you can do something like this (tested with
saxon b 8.6.1)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<xsl:output method="text" />
<xsl:template match="/employees">
<xsl:apply-templates select="employee">
<xsl:sort select="max(for $x in Patent/date return xs:date($x))"
order="descending" />
</xsl:apply-templates>
</xsl:template>
<xsl:template match="employee">
<xsl:value-of select="firstName" /><xsl:text>
</xsl:text><xsl:value-of select="lastName"
/><xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Regards,
Mukul
On 2/8/06, Billie <whynot77(_at_)cooltoad(_dot_)com> wrote:
Hi everyone,
What I'd like to do is sort a list by the maximum value of a node that may
appear multiple times. I think I'll do much better explaining this in code
rather than words, so here is the XML:
<employees>
<employee>
<firstName>Joe</firstName>
<lastName>Black</lastName>
<Patent>
<date>2005-10-13</date>
<id>65-AHK</id>
</Patent>
<Patent>
<date>2006-01-03</date>
<id>65-AHK</id>
</Patent>
<Patent>
<date>2004-08-24</date>
<id>65-AHK</id>
</Patent>
</employee>
<employee>
<firstName>Jane</firstName>
<lastName>Doe</lastName>
<Patent>
<date>2005-11-18</date>
<id>65-AHK</id>
</Patent>
<Patent>
<date>2006-01-19</date>
<id>65-AHK</id>
</Patent>
</employee>
<employees>
I'm looking to sort this list by which employee has the most recent Patent, so
in this case, Jane Doe would be first because her most recent Patent has a
date of 2006-01-19 and Joe Black's most recent Patent has a date of
2006-01-03.
So I would want the XSL to be something like:
<xsl:apply-templates select="employee">
<xsl:sort>
(what do I do here?)
</xsl:sort>
</xsl:apply-templates>
Thanks for any help!
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--