<xsl:choose> 要素
<xsl:otherwise> 要素および <xsl:when> 要素と組み合わせて使用することで複数の条件をテストします。
<xsl:choose>
</xsl:choose>
要素情報
解説
<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 < 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>
出力
(small) 9
(medium) 19
(large) 29