Hallo,
und erst nochmal vielen Dank.
Im Prinzip gruppiere ich jetzt die Elemente und vergliche dann immer das erste aus der Gruppe mit dem aktuellen, so werden Duplikate nicht mehr in die Sortierung hineingenommen.
(Falls dich interessiert: wenn du nach "gernerate-id(key" und nach meinem Namen im Archiv suchst, findest du die lange Erklärung)
Und ob mich das interessiert hat. Danke für den Tipp, hab gleich mal Deinen Artikel und die Posts zu dem Thema im Forenarchiv durchgelesen sowie ein weitere Tutorial zum Gruppieren mit der Muench'schen Methode.
Was Du geschrieben hast funktioniert einwandfrei (!) aber (und jetzt bitte nicht lachen oder weinen ;-) ) nicht bei mir.
Wenn ich das was ich gelesen habe richtig verstanden habe, liegt das wohl daran, dass ich bisher keine id's für li-Elemente habe (obgleich diese ja durch generate-id(.) (zumindest für den Ausgabeknoten) erzeugt werden)?
Dazu noch eine Frage nebenbei: Könnte es in dem Kontext Konflikte geben, wenn ich in meinem Schema an mehreren Stellen Attribute namens "id" definiert habe, die allerdings nicht vom Typ ID sind?
Was mich noch etwas verwirrt ist folgendes:
Zum testen habe ich das Template in einem neuen und ansonsten leeren XSL probiert und da funktionierte es natürlich wie es soll.
Im XSL, in dem ich es verwenden möchte hingegen scheitert es, bei ansonsten identischen Bedingungen (gleiches Schema und XML) an der Auswertung von "li[generate-id(.) = generate-id(key('likey', .)[1])]".
Soviel mal zu meinen Misserfolgen und Missverständnissen ;-)
Erfolgreich hingegen ist, dass ich nun doch einen Ausdruck gefunden habe mit dem ich mit for-each die Knotenmenge so selektieren kann, dass ich nachträglich nicht mehr filtern muss:
"ul/li[not(. = preceding-sibling::li)]"
Damit funktioniert es jetzt ganz gut.
Auch dafür möchte ich Dir danken, weil ich darauf nämlich wahrscheinlich nicht gekommen wäre, wenn ich nicht in einem Tutorial zum Gruppieren mit der Muench'schen Methode einen ähnlichen Ausdruck gelesen hätte ;-)
Viele Grüße
Michael