Hallo,
<xsl:for-each select=".//li">
<xsl:sort select="." />
<xsl:variable name="position"><xsl:value-of select="position() mod 2"></xsl:value-of> </xsl:variable>
variable select="position() mod 2" name="position"
Ergebnis: Ausgabe ist sortiert und jedes zweite li hat eine andere class. (Einen Zufall kann ich 100%ig ausschließen, da die Liste zum einen schon ziemlich lang ist und ich zum anderen mal zwei Knoten im XML vertauscht habe)
Wie kann das sein? - bezieht sich position() nach sort nicht doch auf das sortierte Knotenset???
Nein, das ist schon OK so. Denn mit for-each selektierst du eine Knotenmenge, alle weitere Angaben in diesem Template (ja, auch for-ech ist ein Template, aber das soll uns jetzt nicht kümmern) gelten für diese Knotenmenge. So wird es immer noch nach position() im Dokument gearbeitet, aber mit der Einschrenkung, dass dabei nur diese Knotenmenge beachtet wird. Deshalb funktioniert es auch, wenn du Knoten vertauschst.
»» Wie es zu lösen ist, weiß ich im Moment aber auch nicht.
Hätte sich ja dann erledigt, wenn es so sein sollte wie oben ich probier mal die Methode, die ich erst nehmen wollte und schreib mal obs funzt.
Was heisst das auf Deutsch?
Wie adressiere ich denn den Knoten?
preceding-sibling::überschrift/@h1 Trifft bei mir nichts. Habe ich da einen Denkfehler?
Ja, denn du hast kein Attribut mit dem Namen "h1". Außerdem so würdest du zwar das Attribut "h1" treffen, nicht aber das Element.
Grüße
Thomas