Элемент <xsl:choose>

Проводит проверку по нескольким условиям совместно с элементами <xsl:otherwise> и <xsl:when>.

<xsl:choose>
</xsl:choose>

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

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, элементы вывода

Дочерние элементы

xsl:otherwise, xsl:when

Заметки

В порядке убывания проверяются дочерние элементы <xsl:when> элемента <xsl:choose> до тех пор, пока атрибут test в одном из этих элементов не опишет в точности условия, указанные в исходных данных, либо пока не будет достигнут элемент <xsl:otherwise>. Блок <xsl:choose> завершается, когда выбран элемент <xsl:when> или <xsl:otherwise>. Не требуется явной инструкции остановки или завершения.

Для простых условных проверок используйте элемент <xsl:if>.

Пример

Следующий пример иллюстрирует шаблон для элементов <order>, перед содержимым каждого элемента <order> вставляется индикатор размера. Индикатор размера основывается на значении элемента <total> внутри каждого элемента <order>. Если сумма меньше 10, добавляется текст «(small)». Если сумма меньше 20, добавляется текст «(medium)». Если сумма больше или равна 20, добавляется текст «(large)».

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>

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>

Вывод

(small) 9

(medium) 19

(large) 29