・複数の条件によって分岐し、表示内容を変える場合に使われる。
★書式★
<xsl:choose>
<xsl:when
test="条件式1">
(テンプレート内容1)
</xsl:when>
<xsl:when
test="条件式2">
(テンプレート内容2)
</xsl:when>
<xsl:when
test="条件式3">
(テンプレート内容3)
</xsl:when>
・
・
・
<xsl:otherwise>
(テンプレート内容)
</xsl:otherwise>
</xsl:choose>
*各whenの条件式が評価され
、真ならテンプレート内容を実行する。全てのwhen要素が偽の場合のみotherwiseのテンプレート内容が実行される。
[サンプルXML文書を表示](下のフレームに)
(このサンプルは、属性の文字列により条件分岐(色分け)する)
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?> <?xml-stylesheet type="text/xsl" href="choose01.xsl"?> <start> <top>ドメイン別ヒットチャート <sub>2000/9/11〜9/17集計(週間アスキー2000/10/17号より)</sub> </top> <contents> <item> <rank at="a">順位</rank> <url>ドメイン名</url> <hit>ヒット数</hit> </item> <item> <rank>1</rank> <url>yahoo.co.jp</url> <hit>5706989</hit> </item> <item> <rank at="p">2</rank> <url>geocities.co.jp</url> <hit>2529448</hit> </item> <item> <rank at="y">3</rank> <url>biglobe.ne.jp</url> <hit>2520010</hit> </item> <item> <rank>4</rank> <url>nifty.com</url> <hit>2287200</hit> </item> <item> <rank at="p">5</rank> <url>msn.com</url> <hit>2022929</hit> </item> <item> <rank at="y">6</rank> <url>dti.ne.jp</url> <hit>1834165</hit> </item> <item> <rank>7</rank> <url>so-net.ne.jp</url> <hit>1714614</hit> </item> </contents> <end>以上です(00/10/31)</end> </start>
XSLソース
<?xml version="1.0" encoding="Shift_Jis"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <H3>表題「<xsl:value-of select="start/top"/>」</H3> <xsl:apply-templates select="start/contents"/> </xsl:template> <xsl:template match="contents"> <table border="1"> <xsl:for-each select="item"> <xsl:choose> <xsl:when test="rank[@at='a']"> <tr style="background-color:black;color:white;font-weight:bold"> <td><xsl:value-of select="rank"/></td> <td><xsl:value-of select="url"/></td> <td><xsl:value-of select="hit"/></td> </tr> </xsl:when> <xsl:when test="rank[@at='p']"> <tr style="background-color:pink"> <td><xsl:value-of select="rank"/></td> <td><xsl:value-of select="url"/></td> <td><xsl:value-of select="hit"/></td> </tr> </xsl:when> <xsl:when test="rank[@at='y']"> <tr style="background-color:yellow"> <td><xsl:value-of select="rank"/></td> <td><xsl:value-of select="url"/></td> <td><xsl:value-of select="hit"/></td> </tr> </xsl:when> <xsl:otherwise> <tr> <td><xsl:value-of select="rank"/></td> <td><xsl:value-of select="url"/></td> <td><xsl:value-of select="hit"/></td> </tr> </xsl:otherwise> </xsl:choose> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet>
end(00/10/31)