Re: [xsl] grouping problem

Subject: Re: [xsl] grouping problem
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Fri, 02 Apr 2010 12:06:46 +0200
Szabo, Patrick (LNG-VIE) wrote:

I've got the following structure:
<rechtliche-begruendung>
<ueberschrift>GrC<nde:</ueberschrift>
<absatz>I.</absatz>
<rz-zaehlung>1</rz-zaehlung>
<absatz>blabla</absatz>
<rz-zaehlung>2</rz-zaehlung>
<absatz>blabla</absatz>
<absatz>I.</absatz>
<rz-zaehlung>3</rz-zaehlung>
<absatz>blabla</absatz>
<absatz>blabla</absatz>
<rz-zaehlung>4</rz-zaehlung>
<absatz>blabla</absatz>
<absatz>II.</absatz>
<rz-zaehlung>5</rz-zaehlung>
<absatz>blabla</absatz>
</rechtliche-begruendung>


It should look like this after grouping:

<rechtliche-begruendung>
<ueberschrift>GrC<nde:</ueberschrift>
<absatz>I.</absatz>
<randziffer>
<rz-zaehlung>1</rz-zaehlung>
<absatz>blabla</absatz>
</randziffer> <randziffer>
<rz-zaehlung>2</rz-zaehlung>
<absatz>blabla</absatz>
</randziffer>
<absatz>I.</absatz>
<randziffer> <rz-zaehlung>3</rz-zaehlung>
<absatz>blabla</absatz>
<absatz>blabla</absatz>
</randziffer>
<randziffer> <rz-zaehlung>4</rz-zaehlung>
<absatz>blabla</absatz>
</randziffer>
<absatz>II.</absatz>
<randziffer> <rz-zaehlung>5</rz-zaehlung>
<absatz>blabla</absatz>
</randziffer>
</rechtliche-begruendung>


So a group is starting with rz-zeahlung.
The problem is that i don't want to have those <absatz> elements in the groups that contain roman numbers...

The following should do:


<xsl:stylesheet
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
  version="2.0">

<xsl:output indent="yes"/>

<xsl:template match="rechtliche-begruendung">
<xsl:copy>
<xsl:for-each-group select="*" group-adjacent="self::ueberschrift or self::absatz[matches(., 'I+\.')]">
<xsl:choose>
<xsl:when test="current-grouping-key()">
<xsl:copy-of select="current-group()"/>
</xsl:when>
<xsl:otherwise>
<xsl:for-each-group select="current-group()" group-starting-with="rz-zaehlung">
<randziffer>
<xsl:copy-of select="current-group()"/>
</randziffer>
</xsl:for-each-group>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>


</xsl:stylesheet>

--

	Martin Honnen
	http://msmvps.com/blogs/martin_honnen/

Current Thread