[xsl] Grouping similar elements and putting out information about the first and the last member

Subject: [xsl] Grouping similar elements and putting out information about the first and the last member
From: "Huditsch Roman" <Roman.Huditsch@xxxxxxxxxxxxx>
Date: Thu, 24 Feb 2005 09:25:13 +0100
Hi group,

I am once again catched in a grouping problem.
I have a structure like this one:


<norm xmlns="http://www.lexisnexis.at/schema/norm"; id="dv_eheg">
	...
	<jur_block id="p13" v_ref="v0" v_marker="dazu">
		<zaehlung zaehlungsart="Paragraf">13</zaehlung>
		<absatz>Das Verbot der Doppelehe (' 8 des Ehegesetzes) steht einer
Wiederholung der Eheschlie_ung nicht entgegen, wenn die Ehegatten Zweifel an
der G|ltigkeit oder an dem Fortbestand ihrer Ehe hegen.</absatz>
	</jur_block>
	<jur_block id="p14_1" v_ref="v0" v_marker="dazu">
		<zaehlung zaehlungsart="Paragraf">14</zaehlung>
		<absatz>[Text ist nicht vorhanden.]</absatz>
		<anmerkung>(aufgehoben, StGBl 1945/31 und BGBl 1976/331)</anmerkung>
	</jur_block>
	<jur_block id="p15_1" v_ref="v0" v_marker="dazu">
		<zaehlung zaehlungsart="Paragraf">15</zaehlung>
		<absatz>[Text ist nicht vorhanden.]</absatz>
		<anmerkung>(aufgehoben, StGBl 1945/31 und BGBl 1976/331)</anmerkung>
	</jur_block>
	<jur_block id="p16" v_ref="v0" v_marker="dazu">
		<zaehlung zaehlungsart="Paragraf">16</zaehlung>
		<absatz>Soweit auf die vermvgensrechtlichen Beziehungen der Ehegatten aus
einer f|r nichtig erkldrten Ehe die im Falle der Scheidung geltenden
Vorschriften entsprechende Anwendung finden (' 31 Abs. 1 des Ehegesetzes),
kann im Falle des <version v_ref="v8"/> ' 69 Abs. 3 des Ehegesetzes jeder
Ehegatte Unterhalt ohne R|cksicht darauf verlangen, wer die Nichtigkeitsklage
erhoben hatte.</absatz>
	</jur_block>
	...
</norm>

For each <jur_block> which has an <anmerkung> starting with "(aufgehoben" I
need to put out the <zaehlung> of the first preceding <jur_block> element with
<absatz>[Text ist nicht vorhanden.]</absatz> and the last following
<jur_block>.

For example, the stylesheet should produce a string like "13 bis 15
(aufgehoben, StGBl 1945/31 und BGBl 1976/331)".

I tried to solve this issue with <xsl:for-each-group> but I was unable to get
the <zaehlung> of the first and last group member....

Here is my XSLT code snippet:

<xsl:template match="ln:anmerkung">
	<xsl:variable name="val" select="."/>
	<xsl:choose>
		<xsl:when test="starts-with(., '(aufgehoben') and
preceding-sibling::ln:absatz[.='[Text ist nicht vorhanden.]']">
			<xsl:for-each-group select="../../ln:jur_block"
group-by="ln:anmerkung[.=$val]">
				<xsl:value-of select="current-group()/ln:jur_block[1]/ln:zaehlung"/>
				<xsl:text> bis </xsl:text>
				<xsl:value-of select="current-group()/ln:jur_block[last()]/ln:zaehlung"/>
			</xsl:for-each-group>
			<xsl:text> </xsl:text>
			<xsl:apply-templates/>
		</xsl:when>
		<xsl:otherwise>
			<inline style="*fettkursiv">
				<xsl:text>Anm. d. Red.: </xsl:text>
			</inline>
			<xsl:apply-templates/>
		</xsl:otherwise>
	</xsl:choose>
</xsl:template>

Can you help me with this problem?
Thank you very much.

wbr,
Roman

Current Thread