<xsl:choose> 要素

<xsl:otherwise> 要素および <xsl:when> 要素と組み合わせて使用することで複数の条件をテストします。

<xsl:choose>
</xsl:choose>

要素情報

出現回数

無制限

親要素

xsl:attributexsl:commentxsl:copyxsl:elementxsl:fallbackxsl:for-eachxsl:ifxsl:messagexsl:otherwisexsl:paramxsl:processing-instructionxsl:templatexsl:variablexsl:whenxsl:with-param、出力要素

子要素

xsl:otherwisexsl:when

解説

<xsl:choose> 要素の子要素である <xsl:when> 要素のいずれかで test 属性がソース データの条件と完全に一致するまで、または <xsl:otherwise> 要素に達するまで、上から下へ <xsl:when> 要素がテストされます。 <xsl:when> 要素または <xsl:otherwise> 要素が選択されると、<xsl:choose> ブロックが終了します。 明示的な break ステートメントまたは exit ステートメントは必要ありません。

単純な条件付きテストの場合は、<xsl:if> 要素を使用します。

使用例

次の例では、<order> 要素のテンプレートを表示し、各 <order> の内容の前にサイズ インジケーターを挿入します。 このサイズ インジケーターには、各 <order> 要素内の <total> 要素の値が使用されます。 合計値が 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