DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren



 

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
Re: Schleife über Elemente + position()-Funktion
Das musste mit nem count lösen.<br>Am Anfang ist der Count 0 und dann zählste einmal hoch und lässt den Tabellenkopf nur einmal generieren.
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!

 Betreff:
 Nachricht: Den Beitrag finden Sie nun unter: http://beta.devtrain.de/foren Die Benutzerdaten und Foreninhalte von beta.devtrain.de und www.devtrain.de sind die selben.
Sie können sich dort sogar per RSS über neue Inhalte informieren lassen.
Bei Problemen bitte direkt Mail an asp [AT] ppedv.de.

 Signatur:

  



Login
Username:


Passwort:






Passwort vergessen?

Advanced Developers Conference vom 14.-15. Februar 2011

© Copyright 2003 ppedv AG