Hallo,
ist die Frage zu kompliziert oder schlecht gestellt? Hat niemand eine Idee?
Vielleicht Zeit?
Wie auch immer: auf so ein XML:
<?xml version="1.0" encoding="iso-8859-1"?>
<data>
<chapter name="Kapitelname1">
<section>
<slide title="Seitenname1">Inhalt</slide>
<slide title="Seitenname2">Inhalt</slide>
</section>
<section>
<slide title="Seitenname3">Inhalt</slide>
<slide title="Seitenname4">Inhalt</slide>
</section>
</chapter>
<chapter name="Kapitelname2">
<section>
<slide title="Seitenname5">Inhalt</slide>
<slide title="Seitenname6">Inhalt</slide>
</section>
<section>
<slide title="Seitenname7">Inhalt</slide>
<slide title="Seitenname8">Inhalt</slide>
</section>
</chapter>
</data>
das folgende Stylesheet angewendet:
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/data">
<html>
<head>
<title>Untitled</title>
</head>
<body>
<xsl:for-each select="chapter">
<xsl:variable name="chapternumber">
<xsl:number level="single" count="chapter" format="1" />
</xsl:variable>
<p>
Kapitel <xsl:value-of select="$chapternumber" />: <xsl:value-of select="@name" /><br />
<xsl:call-template name="slidegroup">
<xsl:with-param name="group" select=".//slide" />
<xsl:with-param name="chapternumber" select="$chapternumber" />
</xsl:call-template>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
<xsl:template name="slidegroup">
<xsl:param name="group" />
<xsl:param name="chapternumber" />
<xsl:for-each select="$group">
<xsl:value-of select="concat($chapternumber, '.', position(), ' ', @title)" />
<br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
erhalte ich als Ergebnis:
Kapitel 1: Kapitelname1
1.1 Seitenname1
1.2 Seitenname2
1.3 Seitenname3
1.4 Seitenname4
Kapitel 2: Kapitelname2
2.1 Seitenname5
2.2 Seitenname6
2.3 Seitenname7
2.4 Seitenname8
Grüße
Thomas