Janine: xsl:if in Schleife, Ausgabe außerhalb

Beitrag lesen

Hallo,

ich habe folgenden (stark vereinfachten) Code:

<check>
	<bpd name="000">
		<test name="010">false</test>
		<test name="020">true</test>
		<test name="030">true</test>
	</bpd>
	<bpd name="100">
		<test name="110">true</test>
		<test name="120">false</test>
		<test name="130">true</test>
	</bpd>
</check>

Nun möchte ich die Tests ausgeben, die "false" sind, damit man schnell die Fehler identifizieren und beheben kann. Das habe ich über eine Schleife gelöst und funktioniert auch wunderbar. Mein Problem ist nur, dass ich gerne für den Fall eine Ausgabe hätte, dass alle Tests "true" sind. Damit ich einen Satz drunter schreiben kann: "Alles in Ordnung, keine Fehler." Da habe ich aber einen Knoten im Kopf, wie man die Prüfung ohne Schleife durchführt, weil ich den Satz ja nicht 500x dastehen haben möchte.

Hier mein bisheriger Code:


<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" exclude-result-prefixes="xs" version="2.0">
  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
  	<ul>
			<xsl:for-each select="/check/bpd/test">
				<xsl:if test="text() = 'false'">
					<li>
						<xsl:text>Test </xsl:text>
						<xsl:value-of select="../@name"/>
						<xsl:text>: Fehler bei </xsl:text>
						<xsl:value-of select="@name"/>
					</li>
				</xsl:if>
			</xsl:for-each>
		</ul>
		<xsl:if test="//test/text() != 'false'"> <!--Hier ist irgendwo der Fehler. Der Satz wird nämlich auch ausgegeben, wenn "false" irgendwo vorhanden ist.-->
			<p>Es sind keine fehlerhaften Verlinkungen vorhanden. :)</p>
		</xsl:if>
  </xsl:template>
</xsl:stylesheet>

Grüße, Janine↕️

akzeptierte Antworten