Forum: XML Beginner |
Thema:
Schleife über Elemente + position()-Funktion |
Von:
Jens Osburg (
01.10.2004 10:46) |
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!
Alex
<!-- 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:otherwise>
Fehler!
</xsl:otherwise>
</xsl:choose>
</fo:block>
Betreff |
Von |
Datum |
|
|
Sven
Buhk
|
01.10.2004 13:14 |
|
|
Re: Schleife über Elemente + position()-Funktion
Hallo Sven,<br><br>vielen Dank für Deine Antwort - nur verstehe ich diese noch nicht zu 100%...<br><br>Meines Wissens nach könnte ich die count()-Funktion doch "lediglich" dazu verwenden, um zu zählen, wie... |
|
|
|
|
|
G.
Guest
|
04.10.2004 08:22 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!