xsl-list
[Top] [All Lists]

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

2008-11-20 09:10:14
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/

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>