[xsl] Problem with Positional Grouping from MSXML

Subject: [xsl] Problem with Positional Grouping from MSXML
From: Andy Carr1 <CARRA@xxxxxxxxxx>
Date: Thu, 1 Feb 2007 09:37:11 +0000
Hi

I am running into difficulties while trying to perform Positional Grouping
on a MSXML file.
What I need to do is find the Headings in a MSXML file and transform them
into <Section> tags. Everything beneath the Heading should become a child
of <Section> until the next Heading is found, at which point the process
starts over.

A sample of the xml I am trying to transform is:

<ns0:Body>
   <w:p>
      <w:pPr>
         <w:pStyle w:val="BodyHeading"/>
      </w:pPr>
      <w:r>
         <w:t>Heading Text</w:t>
      </w:r>
   </w:p>
   <w:p>
      <w:pPr>
         <w:pStyle w:val="NumberedText"/>
      </w:pPr>
      <w:r>
         <w:t>Some list text</w:t>
      </w:r>
   </w:p>
   <w:p>
      <w:pPr>
         <w:pStyle w:val="Text"/>
      </w:pPr>
      <w:r>
         <w:t>Some text</w:t>
      </w:r>
   </w:p>
   <w:p>
      <w:pPr>
         <w:pStyle w:val="BodyHeading"/>
      </w:pPr>
      <w:r>
         <w:t>Another Heading Text</w:t>
      </w:r>
   </w:p>
   <w:p>
      <w:pPr>
         <w:pStyle w:val="Text"/>
      </w:pPr>
      <w:r>
         <w:t>Some more text</w:t>
      </w:r>
   </w:p>
   <w:p>
      <w:pPr>
         <w:pStyle w:val="NumberedText"/>
      </w:pPr>
      <w:r>
         <w:t>Some more list text</w:t>
      </w:r>
   </w:p>
</ns0:Body>

Sorry it's a bit long. As you can see MSXML treats a Heading as <w:p> like
any other paragraph. The output desired should look like this:

<Body>
   <Section>
      <Title>Heading Text</Title> (from the first Heading)
      <List>
         <ListItem>Some list text</List>
      </List>
      <Para>Some text</Para>
   </Section>
   <Section>
      <Title>Another Heading Text</Title> (from the second Heading)
      <Para>Some more text</Para>
      <List>
         <ListItem>Some more list text</List>
      </List>
   </Section>
</Body>

I have no control over the number of paragraphs that the Body might contain
and I think I need to use the w:pStyle/@w:val attribute to identify which
paragraphs need to become Section headings but I can't get the right logic.

I am using XSL 2.0 with XML Spy 2007- I would appreciate some help as my
head is about to explode :-/

Regards
Andy

Andy Carr
IT Specialist
Tel: Internal - 298037 External - 01252 558037
Mail Point  M1C IBM Application Services
Meudon House, Meudon Avenue, Farnborough, GU14 7NB
(Notes) Andy Carr1/UK/IBM@IBMGB
(Internet)CARRA@xxxxxxxxxx

Current Thread