Dear Michael
Thanks for the reply and advice.
--
Kevin
> -----Original Message-----
> From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
> Sent: 13 August 2010 12:53
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Re: Grouping adjacent elements by value - within a range
>
>
> It's not clear to me whether a period goes in the same group as the
> previous element if (a) its price is within #20 of the price of the
> previous period, or (b) its price is within #20 of the price of the
> first period in the group, or (c) its price is within #20 of every
> other
> period within the group. Assuming (c) which seems the most plausible, I
> think you need to do this by sibling recursion rather than by
> xsl:for-each-group. Here's an example of the idea, there are plenty of
> others you can find by googling:
>
> http://internal.rhaptos.org/devblog/cbearden/2009.07.12-2010
>
> The difference is how to test whether the next item belongs in the same
> group: typically you'll pass along parameters containing the minimum
> and
> maximum price of items in the group, and either add the next item to
> the
> group or start a new group depending how the price of the next item
> compares with these two values.
>
> Michael Kay
> Saxonica
>
>
>
> On 13/08/2010 10:35, Kevin Bird wrote:
> > Hello
> >
> > I typeset price tables for Tour Operators brochures. Due to design
> changes, the space left to display price information has been reduced.
> I need to group adjacent<price> elements that are within a certain
> range (the range would be passed as a parameter). Once the price
> groupings are worked out, I then need to modify the
> corresponding<period> elements.
> >
> > The example below shows adjacent price elements grouped that are
> within a range of #20 (with the lowest price returned). Using the same
> groupings, the<period> elements are modified by taking the
> first<startdate> and last<enddate>.
> >
> > I can use XSLT 2.0.
> >
> >
> > =========================
> > SOURCE XML
> > =========================
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <grid>
> > <row id="periods">
> > <period>
> > <startdate>01-Sep-2010</startdate>
> > <enddate>19-Sep-2010</enddate>
> > </period>
> > <period>
> > <startdate>20-Sep-2010</startdate>
> > <enddate>25-Sep-2010</enddate>
> > </period>
> > <period>
> > <startdate>26-Sep-2010</startdate>
> > <enddate>30-Sep-2010</enddate>
> > </period>
> > <period>
> > <startdate>01-Oct-2010</startdate>
> > <enddate>11-Oct-2010</enddate>
> > </period>
> > <period>
> > <startdate>12-Oct-2010</startdate>
> > <enddate>31-Oct-2010</enddate>
> > </period>
> > </row>
> > <row id="prices">
> > <price>1209</price>
> > <price>1109</price>
> > <price>1129</price>
> > <price>1359</price>
> > <price>1369</price>
> > </row>
> > </grid>
> >
> >
> > =========================
> > RESULT XML
> > =========================
> >
> > <?xml version="1.0" encoding="UTF-8"?>
> > <grid>
> > <row id="periods">
> > <period>
> > <startdate>01-Sep-2010</startdate>
> > <enddate>19-Sep-2010</enddate>
> > </period>
> > <period>
> > <startdate>20-Sep-2010</startdate>
> > <enddate>30-Sep-2010</enddate>
> > </period>
> > <period>
> > <startdate>01-Oct-2010</startdate>
> > <enddate>31-Oct-2010</enddate>
> > </period>
> > </row>
> > <row id="prices">
> > <price>1209</price>
> > <price>1109</price>
> > <price>1359</price>
> > </row>
> > </grid>
> >
> >
> > Any help greatly appreciated.
> >
> > --
> > Kevin
|