Hallo,
wenn ich eine xml Datei in diesem Format habe:
<daten>
<auftrag>
<beguenstigter>Dieter</beguenstigter>
<betrag>200</betrag>
<waehrung>USD</waehrung>
</auftrag>
<auftrag>
<beguenstigter>Dieter</beguenstigter>
<betrag>120</betrag>
<waehrung>EUR</waehrung>
</auftrag>
<auftrag>
<beguenstigter>Jochen</beguenstigter>
<betrag>130</betrag>
<waehrung>EUR</waehrung>
</auftrag>
<daten>
erhalte ich durch ein for-each wie hier unten, alle Aufträge "gruppiert" nach waehrung (hier nochmals ein Dank an das Forum für diesen Tipp)
<xsl:for-each select="auftrag[generate-id(.)=generate-id(key('auftrag', waehrung)[1])]">
<xsl:for-each select="key('auftrag', waehrung)">
Habe ich jedoch eine übergeordnete Struktur mit mehreren Knoten "daten" welche wiederum mehrere Aufträge enthalten
<auftraege>
<daten>
<auftrag>
<beguenstigter>Thomas</beguenstigter>
<betrag>100</betrag>
<waehrung>EUR</waehrung>
</auftrag>
<daten>
<daten>
<auftrag>
<beguenstigter>Dieter</beguenstigter>
<betrag>200</betrag>
<waehrung>USD</waehrung>
</auftrag>
<auftrag>
<beguenstigter>Dieter</beguenstigter>
<betrag>120</betrag>
<waehrung>EUR</waehrung>
</auftrag>
<auftrag>
<beguenstigter>Jochen</beguenstigter>
<betrag>130</betrag>
<waehrung>EUR</waehrung>
</auftrag>
<daten>
<daten>
<auftrag>
<beguenstigter>Thomas</beguenstigter>
<betrag>300</betrag>
<waehrung>EUR</waehrung>
</auftrag>
<daten>
</auftraege>
dann erhalte ich durch obige Anweisung eine Gruppierung über alle währungen aller Knoten. Also mein
<xsl:for-each select="daten">
<xsl:for-each select="auftrag[generate-id(.)=generate-id(key('auftrag', waehrung)[1])]">
<xsl:for-each select="key('auftrag', waehrung)">
gibt mir dann eine Gruppierung über das ganze XML File und nicht nur eine Gruppierung über den "aktuellen" Knoten "daten" in dem ich mich gerade befinde.
Wie muss ich die key-generierung erstellen, damit sie sich nur auf den momentan aktuellen knoten "daten" bezieht?
Ich hoffe, mich einigermaßen versändlich ausgedrückt zu haben.
Danke jedenfalls für Feedback.
Edy