RE: [xsl] grouping, sorting, splitting

Subject: RE: [xsl] grouping, sorting, splitting
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 18 Apr 2005 11:27:53 +0100
You should do this as a pipelined (or multi-phase) transformation. Put the
results of the first grouping/sorting operation in a variable (a temporary
tree) and then apply another transformation to put the elements into groups
of three.

Michael Kay
http://www.saxonica.com/
 

> -----Original Message-----
> From: beowulf [mailto:carisenda@xxxxxxxxx] 
> Sent: 18 April 2005 11:12
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] grouping, sorting, splitting
> 
> Hi,
> 
> I have XML if the form:
> 
> <page>
> <entry date="2005-04-15">
>  <title>foo</title>
> </entry>
> <entry date="2005-04-15">
>  <title>bar</title>
> </entry>
> <entry date="2005-02-05">
>  <title>baz</title>
> </entry>
> ...
> </page>
> 
> Which I am trying to group by date, sort by tiltle and then split into
> sets of 3, 3 being the number of columns in the HTML TABLE element I
> am trying to produce as an end result.
> 
> I've got the grouping and sorting:
> <xsl:for-each select="entry[key('days', @date) and count(.|key('days',
> @date)[1])= 1]">
> <xsl:sort select="title"/>
> 
> and I've even got the first item in each group of three from that
> grouped and sorted set:
> <xsl:for-each select="key('days', @date)[position() mod 3 = 1]">
> 
> But I just can't seem to make the final leap to displaying the
> following siblings of the above, making the 3 cell rows. Should I be
> doing this some other way or can someone help me where I am?
> 
> Many thanks,
> Stephen

Current Thread