Subject: RE: Grouping simple flat structure
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 17 Mar 2008 12:42:34 -0000
|
There's a very early description of this problem at
http://www.stylusstudio.com/xsllist/199910/post00560.html
and a solution using the technique often called "sibling recursion" at
http://www.stylusstudio.com/xsllist/199910/post50560.html
(Interesting that these posts predate the publication of XSLT 1.0!)
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Ian Proudfoot [mailto:ian.proudfoot@xxxxxxxxxxx]
> Sent: 17 March 2008 12:28
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Grouping simple flat structure
>
> I have a blind spot when it comes to grouping flat XML
> structure using XSLT 1.0.
>
> My source XML structure is typically as follows (simplified
> for clarity):
>
> <section>
> <title/>
> <warning/>
> <warning/>
> <para/>
> <warning/>
> <warning/>
> <para/>
> <para/>
> </section>
>
> I would like to group adjacent <warning> elements to give
> this structure:
>
> <section>
> <title/>
> <w-group>
> <warning/>
> <warning/>
> </w-group>
> <para/>
> <w-group>
> <warning/>
> <warning/>
> </w-group>
> <para/>
> <para/>
> </section>
>
> I've tried using Muenchian Grouping, but I'm going wrong
> somewhere. I started by trying to identify the start of each
> group using <xsl:template
> match="warning[(preceding-sibling::*[1])[not(self::warning)]]"
>... As a starting point is this correct, it does seem to > capture the
first warning in each group? After that I cannot
> grab the following <warning> sibling elements correctly.
>
>
> For this project I am stuck with XSLT 1.0 and Xalan-C
>
> Thanks for all help.
> Ian
|