XSL - Spezieller Output beim erste "Treffer" von <

J

josburg

Guest
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
 
Ich kenne mich mit XSL nicht wirklich aus, da ich XML-Daten im Code verarbeite und dann von dort aus anzeige. Da aber auf Deine letzte Frage auch niemand geantwortet hat, versuch ichs mal. Wer oder was verarbeitet denn das XSL (der Browser, irgendeine Engine, ...)? Falls dabei Variablen unterstützt werden, würd ich vor dem Select eine Boolean-Variable z.B. auf False setzen, und diese im If prüfen. Wenn sie False ist, ist es das erste Auftreten, also den Text ausgeben und die Variable auf True setzen. In etwa so (VB-mässig daruntergemischt):

bFirst = false
<xsl:for-each select="PGesundheitsdaten/PGesundheitsfragen/item/Gesundheitsfrage">
<xsl:if test="NAntwort='1'">
<fo:block keep-together="always" text-align="start">
if bFirst = false
<"my-content-at-first-hit">
bFirst = true
end if
<xsl:value-of select="Diagnose/PKrankheit/strBezeichnung"/></fo:block>
</xsl:if>
</xsl:for-each>

Wenn das mit Variablen in dieser Form nicht geht, könnte ich mir höchstens noch vorstellen, das erste Auftreten in den XML-Daten selbst zu kennzeichnen, mit einem Attribut oder so.

Griessli
Irene
 
Zurück
Oben