Michael: XSLT - Sortieren und doppelte Einträge unterdrücken

Beitrag lesen

Hallo,

Rein instinktiv würde ich das jetzt eigentlich so lösen, dass ich in einer if-Abfrage den Inhalt von "." mit dem des "position()+1" vergleiche und falls die gleich sind nichts ausgeben lasse. Das müsste ja eigentlich funktionieren(?).

IIRC kann das nicht funktionieren, denn position() bezieht sich auf die Position im Dokument, nicht im (sortierten) Ergebnis.

Aja, genau, das hab ich jetzt verwechselt.

Du müßtest eher darauf testen, ob es ein vorhergehendes Geschwister gibt mit demselben Inhalt, also sowas
<xsl:variable name="this" value="."/>
<xsl:if test="not(preceding-sibling::eintrag[. = $this])">
  <xsl:value-of select="."/>
</xsl:if>

(ungetestet)

jetzt nicht mehr ;-)
hast recht, so funktionierts prinzipiell. Dummerweise hab ich in meinem XSLT für solche Listen noch was eingebaut, dass es mir jedes zweite Ausgabeelement farblich abhebt (mit <xsl:if test="(position()mod2) != 0". Wenn ich jetzt weniger Knoten ausgebe, stimmt die farbige Hervorhebung nicht mehr. Mal kucken, ob ich das irgendwie in den Griff kriege. Evtl. muss ichs doch noch irgendwie anders lösen.

Danke und viele Grüße

Michael