Thomas Meinike: Schleife über Elemente + position()-Funktion

Beitrag lesen

Hallo,

Mein Ansatz war der, einfach mit der Funktion position() dies innerhalb der Schleife zu lösen.
Leider liefert mir die Funktion nicht das Ergebnis innerhalb des Schleifen-Contexts sondern das globale Ergebnis der XML-Datei.

Prinzipieller Hinweis: Verabschiede Dich von der Schleifen-Denkweise. xsl:for-each ist eine Mehrfach-Verarbeitungsanweisung. Der Begriff Schleife suggeriert, dass ein Codeblock nacheinander immer wieder von oben herab durchlaufen wird. Der Code von xsl:for-each wandert aber durch die XML-Baumstruktur (die Verarbeitung erfolgt ggf. sogar parallel). "Gefuehlsmaeßig" ist das mit einer Schleife vergleichbar, technisch nicht.

Anbei die Logik - bei Bedarf, maile ich auch gerne das XML-File zum besseren Verständnis...

Ja bitte, das fehlt zum Verstaendnis der Logik.

<xsl:when test="position()='1'">

Hier faellt zumindest auf, dass ein von position() ermittelter numerischer Wert mit einem String verglichen wird. test="position()=1" passt besser (auch wenn evtl. implizit eine Typkonvertierung erfolgt).

Vermutung: Das Problem laesst sich gaenzlich ohne xsl:for-each loesen, wenn mehrere xsl:template-Vorlagen mittels xsl:apply-templates aufgerufen werden.

MfG, Thomas