Spezieller Output beim erste "Treffer" von <xsl:if...
Alex1
- xsl
0 Mia0 Alex1
0 Thomas J.S.
Hallo,
mein Problem ist, dass ich mit der <xsl:if...-Funktion auf einen bestimmten Inhalt prüfe und es ein oder mehrere Treffer geben wird. Beim ersten "Treffer" möchte ich jedoch vor der eigentlichen Ausgabe einen Text ausgeben-jedoch nur beim ersten "Treffer", bei allen Weiteren soll dieser Text nicht erscheinen.
Kann mir jemand sagen, wie ich es heraus finde, ob die if-Anweisung zum ersten Mal einen "Treffer" hatte oder es weitere "Treffer" sind, um so zu steuern, ob der Text eingeblendet werden soll oder nicht?
<xsl:for-each select="PGesundheitsdaten/PGesundheitsfragen/item/Gesundheitsfrage">
<xsl:if test="NAntwort='1'">
<!-- In der nächsten Zeile sollte dynamischer Inhalt beim ersten Treffer von <xsl:if test="NAntwort='1'"> erscheinen. Die Stelle des einzublendenden Textes ist "my-content-at-first-hit". -->
<fo:block keep-together="always" text-align="start"><"my-content-at-first-hit"><xsl:value-of select="Diagnose/PKrankheit/strBezeichnung"/></fo:block>
</xsl:if>
</xsl:for-each>
Vielen Dank
Alex
Hallo Alex,
hat dir meine Antwort unter
https://forum.selfhtml.org/?t=91038&m=548105
nicht weitergeholfen?
Gruß Mia
Hallo Mia,
zu dem Problem habe ich eine Antwort gefunden.
Dieser Post beinhaltet ja eine andere Frage - nämlich:
Kann ich innerhalb von einem Konstrukt wie:
<xsl:for-each select="...../Gesundheitsfrage">
<xsl:if test="NAntwort='1'">
...
irgendwie feststellen, ob die if-Anweisung zum ersten Mal erfolgreich durchlaufen wurde, um dann beim ersten "Treffer" eine andere Ausgabe auszugeben.
Eigentlich hatte ich irgendwie an einen Zähler innerhalb des <xsl:for-each select gedacht, so dass innerhalb des <xsl:if geprüft wird, welchen Wert der Zähler hat, aber leider kann ich irgendwie den Zähler (den Variableninhalt) nicht vor </xsl:for-each> um eins hoch zählen...
Weiß jetzt nicht, ob das verständlich war?
Würde mich sehr über Hilfe freuen...
Gruß
Alex
Hallo Alex,
hat dir meine Antwort unter
https://forum.selfhtml.org/?t=91038&m=548105
nicht weitergeholfen?Gruß Mia
Hallo,
mein Problem ist, [...]
Du wirst das anderes angehen müssen, denn du möchtest eigentlich eine Gruppierung. Da hast du für dich jetzt zwie Möglichkeiten. Du arbeitest statt mit 'for-each' mit einem rekursiven Templateaufruf: dazu findest du genügend Material im Archiv (z.B. von mit und unter den Stichwörter: 'xsl' und 'counter')
Oder du arbeitest mit key() und xsl:key, dazu findest du auch jede Menge (von mir) im Archiv.
Alternativ kannst du es so versuchen (ich habe es jetzt aber nicht ausprobiert)
<xsl:if test="NAntwort[. = '1'][1]">
Grüße
Thomas