Subject: RE: Grouping of irregular XML
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 21 Feb 2006 09:11:20 -0000
|
Simplest answer is to use XSLT 2.0 with
<xsl:for-each-group select="*" group-adjacent="node-name(.)">
<xsl:choose>
<xsl:when test="current-group[1] instance of element(aaa)">
<ol>
<xsl:copy-of select="current-group()"/>
</ol>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="current-group()"/>
</
</
</
For XSLT 1.0 solutions, search under "XSLT positional grouping".
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Paul Clarke [mailto:pclarke@xxxxxxxxxxxxxxxx]
> Sent: 21 February 2006 07:02
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: Grouping of irregular XML
>
> Hi All,
>
> I'm just coming back to XSLT after a long lay off doing other
> things and am
> struggling with grouping irregular xml content from a converter.
>
> I have this as an input.
>
> <body>
> <aaa>
> ..
> </aaa>
> <aaa>
> ..
> </aaa>
> <bbb>
> ..
> </bbb>
> <aaa>
> ..
> </aaa>
> <aaa>
> ..
> </aaa>
> </body>
>
> And I need to put the groups of <aaa> elements in a deeper structure
>
> <body>
> <ol>
> <aaa>
> ..
> </aaa>
> <aaa>
> ..
> </aaa>
> </ol>
> <bbb>
> ..
> </bbb>
> <ol>
> <aaa>
> ..
> </aaa>
> <aaa>
> ..
> </aaa>
> </ol>
> </body>
>
> Should I be using xsl:key here or another method?
>
> Thanks
>
> Paul Clarke
|