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>
--~--