[Home] [By Thread] [By Date] [Recent Entries]
Terry Ofner wrote:
I am stuck on a two-level grouping problem. This one is slightly different from the last one. I believe it involves nested grouping sequences, but I have been wrong on numerous occasions before. Here is a solution, using the same approach as in my last suggestion on your earlier grouping problem: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="xml" indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template> <xsl:template match="bodymatter">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:for-each-group
select="*"
group-starting-with="chapter">
<level1>
<xsl:for-each-group
select="current-group()"
group-starting-with="a-head">
<xsl:choose>
<xsl:when test="current-group()[1][self::a-head]">
<level2>
<xsl:apply-templates select="current-group()"/>
</level2>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="current-group()"/>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</level1>
</xsl:for-each-group>
</xsl:copy>
</xsl:template></xsl:stylesheet> I think that gives you the grouping you want. -- Martin Honnen http://JavaScript.FAQTs.com/
|

Cart



