<xsl:choose>-Element

Testet mehrere Bedingungen in Verbindung mit dem <xsl:otherwise>-Element und dem <xsl:when>-Element.

<xsl:choose>
</xsl:choose>

Elementinformationen

Anzahl der Vorkommen

Unbegrenzt

Übergeordnete Elemente

xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:message, xsl:otherwise, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, Ausgabeelemente

Untergeordnete Elemente

xsl:otherwise, xsl:when

Hinweise

Die untergeordneten <xsl:when>-Elemente des <xsl:choose>-Elements werden in absteigender Reihenfolge getestet, bis ein test-Attribut für eines dieser Element exakt die Bedingungen in den Quelldaten beschreibt, oder bis ein <xsl:otherwise>-Element erreicht wird. Wenn ein <xsl:when>-Element oder ein <xsl:otherwise>-Element ausgewählt wurde, wird der <xsl:choose>-Block beendet. Es ist keine explizite break-Anweisung oder exit-Anweisung erforderlich.

Verwenden Sie für einfache bedingte Tests das <xsl:if>-Element.

Beispiel

Im folgenden Beispiel wird eine Vorlage für <order>-Elemente veranschaulicht. Außerdem wird ein Größenindikator vor dem Inhalt von jedem <order>-Element eingefügt. Dieser Größenindikator basiert auf dem Wert des <total>-Elements innerhalb jedes <order>-Elements. Wenn die Summe kleiner ist als 10, wird der Text "(small)" hinzugefügt. Wenn die Summe kleiner ist als 20, wird der Text "(medium)" hinzugefügt. Wenn die Summe größer oder gleich 20 ist, wird der Text "(large)" hinzugefügt.

XML-Datei (order.xml)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="refchoose.xsl" ?>
<orders>
   <order>
      <lineitem/>
      <lineitem/>
      <total>9</total>
   </order>
   <order>
      <lineitem/>
      <lineitem/>
      <total>19</total>
   </order>
   <order>
      <lineitem/>
      <lineitem/>
      <total>29</total>
   </order>
</orders>

XSLT-Datei (refchoose.xsl)

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

<xsl:template match="order">
   <xsl:choose>
      <xsl:when test="total &lt; 10">
         (small)
      </xsl:when>
      <xsl:when test="total &lt; 20">
         (medium)
      </xsl:when>
      <xsl:otherwise>
         (large)
      </xsl:otherwise>
   </xsl:choose>
   <xsl:apply-templates />
   <BR/>
</xsl:template>

</xsl:stylesheet>

Ausgabe

(small) 9

(medium) 19

(large) 29