Hi,
Folgendes Problem(chen):
Ich hab eine XML-Datei mit einer Liste von Events (diese haben alle eine id).
Außerdem enthält die XML-Datei auch eine Liste von Personen.
Jede der Personen hat ein Attribut vom Typ IDREFS, indem eine Liste der Events enthalten ist, bei denen diese Person dabei war:
<?xml version="1.0" encoding="utf-8"?>
<people>
<events>
<event id="e1" name="1. Treffen" year="2001"/>
<event id="e3" name="2. Treffen" year="2001"/>
<event id="e4" name="3. Treffen" year="2002"/>
<event id="e5" name="4. Treffen" year="2002"/>
</events>
<persons>
<person id="p1" names="Adam" events="e1" />
<person id="p2" names="Eva" events="e2" />
<person id="p3" names="Kain" events="e1,e2,e3,e4,e5" />
</persons>
</people>
Ziel ist es, eine Auflistung zu erstellen, bei der zu jeder Person die besuchten Events aufgezählt werden.
(das ganze wird in eine dl gepackt, in dt soll der Personenname stehen, in dd für jedes Event ein Absatz).
Für die Personen, die nur eines der Events besucht haben, krieg ich das auch wunderbar hin mit folgenden 2 Templates
(den Rest - Erzeugung der kompletten HTML-Datei bis hin zur dl - hab ich weggelassen, weil er hier irrelevant sein sollte):
<!-- Template, das den Absatz mit den Event-Daten erzeugt -->
<xsl:template match="event">
<p><xsl:value-of select="@name"/>, <xsl:value-of select="@year"/></p>
</xsl:template>
<!-- Template, das den Eintrag für jede Person erzeugen sollte -->
<xsl:template match="person">
<xsl:variable name="eventids"><xsl:value-of select="@events"/></xsl:variable>
<dt><xsl:value-of select="@names"/></dt>
<dd><xsl:apply-templates select="//event[@id=$eventids]" /></dd>
</xsl:template>
Gibt es ein einfacheres Verfahren, daß ich hier nicht selbst den im Attribut events enthaltenen String in Einzelteile zerlegen muß (mit Rekursion und was so dazugehört)?
An der XML-Definition kann ich nichts ändern, ich kann nur das XSL nach meinen Wünschen gestalten.
Vielen Dank im Voraus!
cu,
Andreas
Der Optimist: Das Glas ist halbvoll. - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.\nhttp://mud-guard.de/? http://www.andreas-waechter.de/ http://www.helpers.de/