xsl rekursiv
jazz
- xsl
Hallo
ich hab folgendes Problem:
Ich muss einen Stammbaum mit XML und XSL realisieren. Der XML-Stammbaum sieht folgendermaßen aus:
<Stammbaum>
<Familie>
<Person>
<Name>Opa</Name>
<NachName></NachName>
<GebName></GebName>
<GebDatum></GebDatum>
<Ehe ehe="true">Oma</Ehe>
<Kinder kind="true">
<Person>
<Name>Vater</Name>
<NachName></NachName>
<GebName></GebName>
<GebDatum></GebDatum>
<Ehe ehe="true">Mutter</Ehe>
<Kinder kind="true">
<Person>
<Name>Sohn</Name>
<NachName></NachName>
<GebName></GebName>
<GebDatum></GebDatum>
<Ehe ehe="false"></Ehe>
<Kinder kind="false">
</Kinder>
</Person>
</Kinder>
</Person>
</Kinder>
</Person>
</Familie>
</Stammbaum>
Ich möchte nun alle Kinder rekursiv anzeigen lassen.
Bis jetzt habe ich das nur statisch geschafft d.h. wenn "Ich" noch Kinder bekommen muss ich extra programmieren.
Klartext: egal wie viel Nachkommen kommen es sollen alle angezeigt werden.
Folgendes habe ich schon probiert:
<xsl:template match="/">
<html>
<head>
<title>Stammbaum</title>
<!--link rel="stylesheet" type="text/css" href="stamm.css"-->
</head>
<body>
<div align="center"><h1>Verwandte</h1></div>
<div align="left" style="background-color:yellow">
<xsl:for-each select="Stammbaum/Familie/Person">
<ul>
<li><xsl:value-of select="Name" /> + <xsl:value-of select="Ehe" /></li>
<xsl:call-template name="kinder_reku" />
</ul>
</xsl:for-each>
</div>
</body>
</html>
</xsl:template>
<xsl:template name="kinder_reku">
<xsl:if test="Kinder/@kind='true'">
<xsl:for-each select="Kinder/Person">
<ul>
<li><xsl:value-of select="Name" /><xsl:if test="Ehe/@ehe='true'"> + <xsl:value-of select="Ehe" /></xsl:if></li>
</ul>
</xsl:for-each>
</xsl:if>
<xsl:call-template name="kinder_reku" />
</xsl:template>
</xsl:stylesheet>
Aber der rekursive Aufruf fuktioniert nicht.
Ich hab eine Abfrage die lautet: Wenn kind="true" dann soll es anzeigen.
Irgendwo hab ich bestimmt ein Denkfehler.