Homepage-Webhilfe Event-Banner

Bedingungen

In XSLT gibt es, wie in anderen Programmiersprachen auch, die Möglichkeit, Bedingungen aufzustellen, um somit eine sogenannte Fallunterscheidung durchzuführen. Bei der Fallunterscheidung (auch als Abfrage bezeichnet) wird mit Hilfe einer Bedingung (z. B. einem Vergleich) geprüft, ob ein bestimmter Fall (also die Bedingung) zutrifft. Trifft die Bedingung zu, so kann ein bestimmter Programmteil (also ein Code) ausgeführt werden. Trifft die Bedingung nicht zu, so wird der Programmteil nicht ausgeführt. Um eine Bedingung aufzustellen, benötigen wir bestimmte Operatoren. Hier kommen die logischen Operatoren von XPath ins Spiel: and (und) und or (oder). Mit diesen Operatoren ist es möglich, komplexere Bedingungen bestehend aus mehreren Teilbedingungen aufzustellen. Zudem werden sogenannte Vergleichsoperatoren eingesetzt, um einen Vergleich durchführen zu können: = (gleich), != (ungleich), < (kleiner als), <= (kleiner-gleich), > (größer als) und >= (größer-gleich). Innerhalb einer Bedingung können auch Variablen, Pfade im XPath-Syntax sowie XPath-Funktionen verwendet werden.

Wichtig: Die Zeichen < und > dürfen in XSLT nicht direkt verwendet werden und müssen maskiert werden: &lt; für < und &gt; für >.


Eine Wenn-Bedingung kann mit Hilfe des XSLT-Elements if aufgestellt werden. Man spricht hier auch von einer einfachen Verzweigung, d. h. der Ablauf des Programms / Skripts verzweigt sich. Der Programmteil, der innerhalb dieser Verzweigung notiert wird, wird daher nur dann ausgeführt, wenn die angegebene Bedingung zutrifft. Die Bedingung für die einfache Verzweigung wird innerhalb des test-Attributs angegeben. Im folgenden Beispiel wird das Attribut privat des Wurzelelements auf Übereinstimmung mit dem Wert 'ja' (einfache Anführungszeichen werden benötigt, da es sich bei dem Wert um eine Zeichenkette handelt) geprüft.

XML-Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet href="einfache-verzweigung.xsl" type="text/xsl" ?>

<kontakt privat="ja">
    <name>Max Mustermann</name>
</kontakt>

XSLT-Code:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <head>
                <title>Einfache Verzweigung - XSLT Code-Beispiel</title>
                
                <meta charset="utf-8" />
                
                <meta name="robots" content="noindex,nofollow" />
                <meta name="publisher" content="Homepage-Webhilfe" />
            </head>
            
            <body>
                <xsl:value-of select="/kontakt/name" />
                <xsl:if test="/kontakt/@privat = 'ja'">
                    <i> (Privat)</i>
                </xsl:if>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
VorschauXML:
VorschauHTML:

Wichtig: Die hier genannte Verzweigungsart kennen Sie vielleicht aus anderen Programmiersprachen. In XSLT gibt es jedoch keinen else-Zweig, um zusätzlich den Fall abzudecken, wenn die Bedingung nicht zutrifft.


Eine mehrfache Verzweigung wird i. d. R. immer dann verwendet, wenn Sie einen Wert mit unterschiedlichen Werten vergleichen wollen oder wenn an Hand von mehreren Bedingungen eine Auswahl getroffen werden soll. Bei mehrfachen Verzweigungen in XSLT ist es auch möglich, anders als in anderen Programmiersprachen, z. B. auf einen Wertebereich zu prüfen oder Teilbedingungen mit and und or zu verknüpfen (also so wie bei einfachen Verzweigungen auch). Dies liegt daran, da die mehrfache Verzweigung aus lauter einzelnen Bedingungen besteht, die theoretisch völlig unterschiedlich sein können. Der Code, welcher innerhalb der ersten zutreffenden Bedingung notiert wird, wird ausgeführt, weitere Bedingungen werden dann nicht geprüft und dessen Code natürlich auch nicht ausgeführt.

Um eine solche Abfragereihe zu definieren, notieren wir zu allererst das Element choose. Dieses Element verfügt über keine weiteren Attribute. Innerhalb des choose-Elements werden nun ein oder mehrere when-Elemente sowie bei Bedarf ein otherwise-Element notiert. Die when-Elemente stellen die einzelnen Bedingungen dar. Die eigentliche Bedingung wird dabei im test-Attribut angegeben. Der Code innerhalb des Elements wird nur dann ausgeführt, wenn die Bedingung zutrifft. Mit dem otherwise-Element können Sie den Fall abdecken, wenn keine der Bedingungen (definiert innerhalb der when-Elemente) zutrifft. Das otherwise-Element wird (falls benötigt) immer als letztes notiert und verfügt auch über keine Attribute.

XML-Code:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<?xml-stylesheet href="mehrfache-verzweigung.xsl" type="text/xsl" ?>

<kontakt anrede="hr">
    <name>Max Mustermann</name>
</kontakt>

XSLT-Code:

<?xml version="1.0" encoding="UTF-8" ?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <html>
            <head>
                <title>Mehrfache Verzweigung - XSLT Code-Beispiel</title>
                
                <meta charset="utf-8" />
                
                <meta name="robots" content="noindex,nofollow" />
                <meta name="publisher" content="Homepage-Webhilfe" />
            </head>
            
            <body>
                <xsl:choose>
                    <xsl:when test="/kontakt/@anrede = 'hr'">
                        Herr
                    </xsl:when>
                    <xsl:when test="/kontakt/@anrede = 'fr'">
                        Frau
                    </xsl:when>
                    <xsl:when test="/kontakt/@anrede = 'f'">
                        Firma
                    </xsl:when>
                    <xsl:otherwise>
                        ???
                    </xsl:otherwise>
                </xsl:choose>
                <xsl:value-of select="/kontakt/name" />
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
VorschauXML:
VorschauHTML:
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK