Hallo Andreas,
<xsl:key name="patizip2event" match="participant" use="id(@events)/@id" />
Ich hätte das eigentlich wissen sollen, daß es mit einem key geht.
id() und key() sind sehr nützlich wenn man Knoten gruppieren möchte.
Nochmal Nachfrage, ob ich das jetzt endlich richtig verstanden habe:
Das key-Element liefert mir sowas (natürlich nicht als Strings, sondern als Nodeset, aber zur Visualisierung einfach mal die Elemente hingeschrieben):
*hehe* ich brauche es auch immer wieder zu "sehen" was key() macht.
also zu jedem key (hier die ids der Events) eine Liste der participants (bzw. der in match aufgelisteten Knoten), auf die das use-Attribut zutrifft
Genau.
Wenn du es testest:
<xsl:template match="event">
<h3><xsl:value-of select="@name"/></h3>
<xsl:copy-of select="key('patizip2event', @id)" />
Kommt genau das zurück:
<h3>bla</h3>
<participant events="e01 e03" name="Alpha"></participant>
<h3>blubb</h3>
<participant events="e02" name="Bravo"></participant>
<participant events="e02 e03" name="Charlie"></participant>
<h3>laber</h3>
<participant events="e01 e03" name="Alpha"></participant>
<participant events="e02 e03" name="Charlie"></participant>
<xsl:apply-templates select="key('patizip2event', @id)" mode="byevent"/>
und hier wird mit der key-Funktion die entsprechende Liste zurückgegeben.
In xslt 2.0 wäre das dann einfacher:
<xsl:apply-templates select="idref(@id)" mode="byevent"/>
Aber die Implementierung in Saxon 7.9 scheint noch nicht wirklich zu funktionieren.
Grüße
Thomas