Knoten nummerieren
Tobel
- xsl
0 André Laugks0 fjh
Hallo
Ich würde gerne alle Absatz Elemente meiner XML Datei durchnummerieren, dabei können Sie sich auf verschieden tiefen Ebenen befinden:
<root>
<element>
<absatz>erster absatz</absatz>
<element>
<absatz>zweiter absatz</absatz>
</element>
</element>
<element>
<absatz>dritter absatz</absatz>
</element>
</root>
Rauskommen sollte dann sowas:
1. erster Absatz
2. zweiter Absatz
3. dritter Absatz
Wie stell ich das an?
Gruss,
Tobel
Hallo!
Rauskommen sollte dann sowas:
- erster Absatz
- zweiter Absatz
- dritter Absatz
Das Kannst Du mit xsl:number/ machen.
http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#number
MfG, André Laugks
Hallo,
Ich würde gerne alle Absatz Elemente meiner XML Datei durchnummerieren, dabei können Sie sich auf verschieden tiefen Ebenen befinden:
<root>
<element>
<absatz>erster absatz</absatz>
<element>
<absatz>zweiter absatz</absatz>
</element>
</element>
<element>
<absatz>dritter absatz</absatz>
</element>
</root>Rauskommen sollte dann sowas:
- erster Absatz
- zweiter Absatz
- dritter Absatz
Wenn die Ebene des <absatz>-Elements sich nicht in Deinem Inhaltsverzeichnis wiederspiegeln soll, dann geht es recht einfach z.B. so:
<xsl:template match="/">
<html>
<head>
<title>Inhaltsverzeichnis</title>
</head>
<body>
<xsl:for-each select="//absatz">
<p>
<xsl:value-of select="position()"/>.<xsl:value-of select="."/>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
Mit xsl:number geht's natürlich genauso. In der Regel ist position() allerdings performanter. Falls du allerdings hierarchische Nummerierung möchtest (1.,1.1), musst du xsl:number nehmen.
Für Dein Beispiel etwa so:
<?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="/">
<html>
<head>
<title>Inhaltsverzeichnis</title>
</head>
<body>
xsl:apply-templates/
</body>
</html>
</xsl:template>
<xsl:template match="absatz">
<p>
<xsl:number level="multiple" format="1." count="element" />
<xsl:value-of select="."/>
</p>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
Gruß
Franz