XSLT rekursiv durch Unterkategorien

slimox

Mitglied
Hallo,
Ich veruche mit XSLT ein XML auszugeben. Ich bekommen aber keine rekursive ausgabe hin... So sieht das XML aus:
Code:
<kategorien>
	<Ebene>
		<name>Erste Ebene</name>
		<SubEbene>
			<name>Erste Unterebene</name>
			<SubEbene>
				<name>Zweite Unterebene</name>
				<SubEbene>
					<name>Dritte Unterebene</name>
				</SubEbene>
			</SubEbene>
		</SubEbene>
	</Ebene>
	<Ebene>
		<name>Zweite Ebene</name>
		<SubEbene>
			<name>Erste Unterebene</name>
		</SubEbene>
	</Ebene>
	<Ebene>
		<name>Dritte Ebene</name>
		<SubEbene>
			<name>Erste Unterebene</name>
			<SubEbene>
				<name>Zweite Unterebene</name>
			</SubEbene>
		</SubEbene>
	</Ebene>
<kategorien>

Die <Ebene> kann eine oder viele Unterebenen haben. Wie kann ich diese Unterebenen auslesen? Ich könnte <xsl:for-each .. <xsl:for-each .. jedoch ist dies SEHR unhübsch;)
Hat jemand erfahrung damit?

Gruss Slimox
 
Zuletzt bearbeitet:
Hallo,
falls du mit der XSLT eine ungeordnete HTML-Liste (Menüliste) erzeugen möchtest, dann kannst du es beispielsweise so machen:
Code:
<xsl:template match="/kategorien">
  <html>
    <head>
      <title>Test</title>
    </head>
    <body>
      <ul>
        <xsl:apply-templates />
      </ul>
    </body>
  </html>
</xsl:template>

<xsl:template match="Ebene">
  <li>
    <xsl:value-of select="name" />
    <xsl:if test="current()/SubEbene">
      <ul>
          <xsl:apply-templates select="SubEbene" />
      </ul>
    </xsl:if>
  </li>
</xsl:template>

<xsl:template match="SubEbene">
  <li>
    <xsl:value-of select="name" />
    <xsl:if test="current()/SubEbene">
      <ul>
          <xsl:apply-templates select="SubEbene" />
      </ul>
    </xsl:if>
  </li>
</xsl:template>
Das letzte Template wird so lange aufgerufen, wie entsprechende Kindknoten im aktuellen Knoten vorhanden sind.
 
Zurück