[xsl] Grouping simple flat structure

Subject: [xsl] Grouping simple flat structure
From: "Ian Proudfoot" <ian.proudfoot@xxxxxxxxxxx>
Date: Mon, 17 Mar 2008 12:28:05 -0000
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

Current Thread