Alex1: Spezieller Output beim erste "Treffer" von <xsl:if...

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

  1. Hallo Alex,

    hat dir meine Antwort unter

    https://forum.selfhtml.org/?t=91038&m=548105
    nicht weitergeholfen?

    Gruß Mia

    1. 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

  2. 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