[Home] [By Thread] [By Date] [Recent Entries]
Thanks Murray et al,
I did have to make one small change to the placement of the <Item> element, but I now have what I want. This has to be the most responsive and helpful list on the Internet! Mark The final template: <xsl:template match="List"> <xsl:element name="List"> <xsl:for-each-group select="Item/Stamp" group-by="concat(Date/@year, '', Date/@month, ' ', Date/@day)"> <xsl:sort select="Date/@year" data-type="number"></xsl:sort> <xsl:sort select="Date/@month" data-type="number"></xsl:sort> <xsl:sort select="Date/@day" data-type="number"></xsl:sort> <xsl:element name="Item"> <!-- output a Date element for each date "group" **within the "Item>--> <xsl:copy-of select="current()/Date" copy-namespaces="no"></xsl:copy-of> <xsl:for-each select="current-group()"> <!-- this sorts the elements within each group --> <xsl:sort select="@value" order="descending" data-type="number"></xsl:sort> <!-- this outputs each individual element within the group in sorted order --> <xsl:copy-of select="." copy-namespaces="no"></xsl:copy-of> </xsl:for-each> </xsl:element> </xsl:for-each-group> </xsl:element> </xsl:template> -----Original Message----- From: Murray McDonald Sent: Wednesday, July 27, 2011 12:19 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: Sorting seems not to work completely Hi Mark, Try this: <xsl:template match="List">
<xsl:element name="List">
<xsl:for-each-group select="Item/Stamp" group-by="concat(Date/@year, '
', Date/@month, ' ', Date/@day)">
<xsl:sort select="Date/@year" data-type="number"></xsl:sort>
<xsl:sort select="Date/@month" data-type="number"></xsl:sort>
<xsl:sort select="Date/@day" data-type="number"></xsl:sort>
<!-- output a Date element for each date "group" -->
<xsl:copy-of select="current()/Date"
copy-namespaces="no"></xsl:copy-of>
<xsl:for-each select="current-group()">
<!-- this sorts the elements within each group -->
<xsl:sort select="@value" order="descending"
data-type="number"></xsl:sort>
<!-- this outputs each individual element within the group in
sorted order -->
<xsl:element name="Item">
<xsl:copy-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:for-each-group>
</xsl:element>
</xsl:template>
|

Cart



