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

Beitrag lesen

Hallo,

Dein Problem, jetzt unabhängig davon das du XSLT 2 verwendest (warum eigentlich?) war das erwähnte:

"ul/li[not(. = preceding-sibling::li)]"

Das deutet aber darauf hin, dass du nicht im Template mit match="litlist/ul" bist, oder dass dein XML etwas anders aussieht. ;-)

??? - habe ich Dir doch schon geschrieben, dass ich im oberen Fall den match nur auf "litlist" habe.

Warum nicht XSLT 2 ? - weils noch nicht Recommendation ist?
Ich habe mir da ehrlichgesagt noch keinen großen Kopf gemacht deswegen.

Da reicht es eine kleine Anpassung im Template:
(key bleibt dasselbe)

<xsl:template match="litlist">
<ul>
  <xsl:for-each select="ul/li[generate-id(.) = generate-id(key('likey', .)[1])]">
   <xsl:sort />
    <li>
     <xsl:attribute name="class">
      <xsl:if test="position() mod 2 = 0">xsl:textlitli</xsl:text></xsl:if>
      <xsl:if test="position() mod 2 = 1">xsl:textlitli2</xsl:text></xsl:if>
     </xsl:attribute>
     <xsl:call-template name="ankersetzen"></xsl:call-template>
     <xsl:value-of select="." />
    </li>
   </xsl:for-each>
  </ul>
</xsl:template>

Das ist schon klar ;-) Das dürfte aber keinen Unterschied machen ob man hier match auf "litlist" macht und dafür für for-each "ul/li" wählt oder "litlist/ul" und for-each "li".

Der Rest dann als Antwort auf deine Mail. ;-)

Bin schon gespannt ;-)

Viele Grüße

Michael