xsl-list
[Top] [All Lists]

Re: [xsl] Sorting seems not to work completely

2011-07-27 14:35:55
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(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: Re: [xsl] 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>


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




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