Re: AW: [xsl] grouping-problem i guess

Subject: Re: AW: [xsl] grouping-problem i guess
From: Martin Honnen <Martin.Honnen@xxxxxx>
Date: Thu, 20 Nov 2008 15:09:43 +0100
Szabo, Patrick (LNG-VIE) wrote:

Here an input with more lists

<liste>
<ziffernliste>
<listelem><symbol >1.</symbol>text</listelem>
<listelem><symbol >2.</symbol>text</listelem>
</ziffernliste>
<schluss>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</schluss>
<schluss>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</schluss>
<strichliste>
<listelem><symbol >-</symbol>text</listelem>
<listelem><symbol >-</symbol>text</listelem>
</strichliste>
<schluss>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</schluss>
<schluss>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</schluss>

</liste>



<nummerierte-liste> <listnum>1.</listnum> <punkt> <absatz>text</absatz> </punkt> <listnum>2.</listnum> <punkt> <absatz>text</absatz> <absatz>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</absatz> <absatz>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</absatz> </punkt> </nummerierte-liste> <liste> <punkt> <absatz>text</absatz> </punkt> <punkt> <absatz>text</absatz> <absatz>AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA</absatz> <absatz>BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB</absatz> </punkt> </liste>

The following stylesheet produces the described result:


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

<xsl:output method="xml" indent="yes"/>

<xsl:template match="liste">
<xsl:for-each-group select="*" group-starting-with="ziffernliste | strichliste">
<xsl:apply-templates select="current-group()[1]"/>
</xsl:for-each-group>
</xsl:template>


  <xsl:template match="ziffernliste">
    <nummerierte-liste>
      <xsl:apply-templates select="listelem" mode="ziffer"/>
    </nummerierte-liste>
  </xsl:template>

  <xsl:template match="listelem" mode="ziffer">
    <listnum>
      <xsl:value-of select="symbol"/>
    </listnum>
    <punkt>
      <xsl:apply-templates select="text()"/>
      <xsl:if test="position() eq last()">
        <xsl:apply-templates select="current-group()[self::schluss]"/>
      </xsl:if>
    </punkt>
  </xsl:template>

  <xsl:template match="strichliste">
    <liste>
      <xsl:apply-templates select="listelem" mode="strich"/>
    </liste>
  </xsl:template>

  <xsl:template match="listelem" mode="strich">
    <punkt>
      <xsl:apply-templates select="text()"/>
      <xsl:if test="position() eq last()">
        <xsl:apply-templates select="current-group()[self::schluss]"/>
      </xsl:if>
    </punkt>
  </xsl:template>

  <xsl:template match="schluss | listelem/text()">
    <absatz>
      <xsl:value-of select="."/>
    </absatz>
  </xsl:template>

</xsl:stylesheet>


--


	Martin Honnen
	http://JavaScript.FAQTs.com/

Current Thread