条件処理 <xsl:choose> no1

・複数の条件によって分岐し、表示内容を変える場合に使われる。

★書式★
  <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)