XML | XML-Schema | XPath | XSL-T | XSL-FO | XQuery | XProc | SVG |
XSL-T / Die XSLT - Struktur / xsl:choose
![]() |
![]() |
➪ xsl:choose erlaubt eine erweiterte, mehrstufige Fallunterscheidung nach dem Konzept "if/then/elseif/then/else". Dabei gibt es einige Besonderheiten zu beachten.
Siehe xsl:choose.
<xsl:choose>
<!-- Content: (xsl:when+, xsl:otherwise?) -->
</xsl:choose>
<xsl:when
test = expression>
<!-- Content: sequence-constructor -->
</xsl:when>
<xsl:otherwise>
<!-- Content: sequence-constructor -->
</xsl:otherwise>
Siehe auch https://www.w3.org/TR/xslt-10/#section-Conditional-Processing-with-xsl:choose.
Siehe auch https://www.w3.org/TR/xslt20/#element-choose.
Siehe auch https://www.w3.org/TR/xslt-30/#element-choose.
Mit der xsl:choose-Anweisung ist es möglich, erweiterte Fallunterscheidungen (im Sinn von if - elseif - else) zu definieren. xsl:choose arbeitet dabei mit when und xsl:otherwise. Ein xsl:choose muss mindestens ein when aufweisen. Sie können beliebig viele when-Tests implementieren. xsl:otherwise darf höchstens einmal deklariert werden, und zwar am Schluss.
Im Transformationsprozess werden nacheinander die implementierten when-Tests durchgeführt. Ist einer dieser Tests positiv, dann wird der Wert weiterverwendet, der diesem Fall zugeordnet ist; eventuell nachfolgende Fälle werden dann nicht mehr betrachtet. Trifft kein when-Test zu, dann kommt der "else"-Fall (xsl:otherwise) zum Tragen.
<xsl:variable name="vPerson" select="/Orte/Ort[2]/Mensch[3]"/>
<xsl:choose>
<xsl:when test="$vPerson/Gehalt >= 1000">reich</xsl:when>
<xsl:when test="$vPerson/Gehalt < 100">arm</xsl:when>
<xsl:otherwise>wohlhabend</xsl:otherwise>
</xsl:choose>
Da der betreffende Mensch 876,54 Euro verdient, ist das Ergebnis dieser Unterscheidung:
<erg>wohlhabend</erg>
Eine einfache Fallprüfung bietet xsl:if.
Ab XSL 2.0 können Sie die Logik auch mit erweiterter Syntax implementieren:
<xsl:value-of
select="if ($vPerson/Gehalt >= 1000)
then ('reich')
else if ($vPerson/Gehalt < 100)
then ('arm')
else ('wohlhabend') "/>
wg / 17. April 2021
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de