Home
Über mich
Veröffentlichungen

XML XML-Schema XPath XSL-T XSL-FO XQuery XProc SVG

XSL-T / Die XSLT - Struktur / xsl:choose

xsl:choose

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.

pic/choose.png


<xsl:variable name="vPerson" select="/Orte/Ort[2]/Mensch[3]"/>
<xsl:choose>
  <xsl:when test="$vPerson/Gehalt &gt;= 1000">reich</xsl:when>
  <xsl:when test="$vPerson/Gehalt &lt; 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 &gt;= 1000) 
             then ('reich') 
             else if ($vPerson/Gehalt &lt; 100) 
             then ('arm') 
             else ('wohlhabend') "/>

wg / 17. April 2021



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.




comment()



Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/choose.html