Condividi tramite


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

xsl:otherwise, xsl:when

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 &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>

Output

(small) 9

(medium) 19

(large) 29