XSL -Schleife über Elemente + position()-Funktion

J

josburg

Guest
Hallo,

ich habe folgende Problemstellung:

In der ersten Schleife "<xsl:for-each select..." gehe ich über alle Gesundheitsfragen in meinem XML-Dokument und prüfe, ob das darin enthaltene Tag "NAntwort=1" ist.
Falls dies der Fall ist, soll eine Tabelle erstellt werden, die weitere Elemente des aktuellen Tags "Gesundheitsfrage" aus gibt.

Soweit funktioniert auch alles...
Mein Problem: Wie ich das erste mal auf das Tag <NAntwort>1</NAntrwort> stoße. möchte ich den Tabellenkopf mit generieren.
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.

Frage: Wie kann ich innerhalb der Schleife unterscheiden, ob ich zum ersten mal auf das Element <NAntwort> mit dem Wert "1" stoße.

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

VIELEN DANK!

Jens


<!-- START - Abfrage, ob ein oder mehrere Gesundheitsfragen mit 'ja' beantwortet wurden -->
<xsl:for-each select="PPersonArray/item/VersPerson/PGesundheitsdaten/ PGesundheitsfragen/item/Gesundheitsfrage">
<!-- Prüfen, ob das Tag "PGesundheitsdaten/PGesundheitsfragen/item/Gesundheitsfrage/NAntwort"=1 vorhanden ist. Wenn ja, wurden mindestens eine Gesundheitsfrage mit "ja" beantwortet. -->
<xsl:if test="NAntwort='1'">
<!-- <fo:block keep-together="always" text-align="start">TESTAUSGABE - Es wurden Diagnosen erfasst!</fo:block> -->

<!-- ZUERST NOCH PRÜFEN, OB MAN GERADE AN POSITION 1 IST. WENN JA, TABELLENHEADER AUSGEBEN, WENN NEIN, DANN NUR ZEILEN AUSGEBEN -->
<fo:block>
<xsl:choose>
<xsl:when test="position()='1'">
<fo:inline font-size="8pt" font-family="Times" font-weight="bold">Tabelle mit HEADER erstellen!</fo:inline>
</xsl:when>
<xsl:when test="position()>'1'">
<fo:inline font-size="8pt" font-family="Times" font-weight="bold">Tabelle ohne HEADER erstellen!</fo:inline>
</xsl:when>
<xsl:eek:therwise>
Fehler!
</xsl:eek:therwise>
</xsl:choose>
</fo:block>
 
Zurück
Oben