Elemento <xsl:choose>
Verifica più condizioni insieme agli elementi <xsl:otherwise> e <xsl:when>.
<xsl:choose>
</xsl:choose>
Informazioni sull'elemento
Numero di occorrenze |
Illimitato |
Elementi padre |
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, elementi di output |
Elementi figlio |
Note
Gli elementi figlio <xsl:when> dell'elemento <xsl:choose> vengono verificati, dall'alto verso il basso, fino a quando un attributo test in uno di tali elementi non descrive accuratamente le condizioni nei dati di origine oppure fino a quando non viene raggiunto un elemento <xsl:otherwise>. Quando viene scelto un elemento <xsl:when> o <xsl:otherwise>, viene eseguita l'uscita dal blocco <xsl:choose>. Non sono necessarie istruzioni esplicite di interruzione o uscita.
Per semplici verifiche condizionali, usare l'elemento <xsl:if>.
Esempio
Nell'esempio seguente viene illustrato un modello per gli elementi <order> e viene inserito un indicatore della dimensione prima del contenuto di ciascun elemento <order>. Questo indicatore della dimensione è basato sul valore dell'elemento <total> all'interno di ciascun elemento <order>. Se il totale è minore di 10, verrà aggiunto il testo "(small)". Se il totale è minore di 20, verrà aggiunto il testo "(medium)". Se il totale è maggiore o uguale a 20, verrà aggiunto il testo "(large)".
File XML (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>
File XSLT (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 < 10">
(small)
</xsl:when>
<xsl:when test="total < 20">
(medium)
</xsl:when>
<xsl:otherwise>
(large)
</xsl:otherwise>
</xsl:choose>
<xsl:apply-templates />
<BR/>
</xsl:template>
</xsl:stylesheet>
Output
(small) 9
(medium) 19
(large) 29