Ein kleine Anregung wie man es machen koennte (ausgabe als xhtml fuer browser ansicht)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml"/>
<xsl:template match="/">
<html>
<head/>
<body>
<h1>Inhaltsverzeichnis</h1>
<!-- Schreibe das Inhaltsverzeichnis -->
<xsl:apply-templates select="descendant::topic" mode="Inhaltsverzeichnis"/>
<!--
Mache nachfolgend ....
-->
</body>
</html>
</xsl:template>
<!-- Templates fuer Ueberschrift -->
<xsl:template match="topic" mode="Inhaltsverzeichnis">
<p>
<!-- Ermittle Ueberschrift Nummer -->
<b>
<xsl:apply-templates select="current()" mode="Verzeichnisnummer"/>
</b>
<!-- Schreibe Ueberschrift -->
<xsl:text> </xsl:text>
<xsl:value-of select="."/>
</p>
</xsl:template>
<!-- Template fuer rekursive Ermittlung -->
<xsl:template match="topic" mode="Verzeichnisnummer">
<xsl:param name="Index"/>
<xsl:choose>
<xsl:when test="parent::*/preceding-sibling::topic">
<xsl:apply-templates select="parent::*/preceding-sibling::topic[position() = 1]" mode="Verzeichnisnummer">
<xsl:with-param name="Index" select="concat('.',count(preceding-sibling::topic) + 1,$Index)"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(count(preceding-sibling::topic) + 1,$Index)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Bedenke jedoch, dass viele Applikationen listenelement haben, bei denen die Nummerierung automatisch vorgenommen wird. Fuer html code siehe z.B.:
<http://de.selfhtml.org/html/text/listen.htm#nummeriert@title=nummerierte Listen>
Gruss, Holge r