XMLドキュメントをIEで表示(基礎編): 内容によって表示を変える

2006年10月08日(日)更新


■XMLドキュメントを表示(6): xsl:choose 内容によって表示を変える(後半)

たけち: じゃあ、具体的にxsl:choose, xsl:when, xsl:otherwiseの個所を図で説明するね。

作者不明の歌以外を表示

たけち: だいたい、雰囲気は分かるよね。poet(作者)の内容が"作者不明"かどうかを判断するための式は、<xsl:when test="poet='作者不明'">だね。poet='作者不明'が、poetの内容(文字列)が作者不明かどうかを判断するためのなんだね。。

さらら: そうなんだぁ。やっとイメージがつかめたわ。

たけち: よかった。じゃあ、次にいつものようにリストを載せるね。テーブルを作るのが狙いだったね。前回と違うところをxsl:choose, xsl:when, xsl:otherwiseというように、赤字で載せておいたからわかるだろ?!

XSLスタイルシート
xsl:choose, xsl:when, xsl:othewise

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
  <head>
  <title>たのしいXML: XSL基本サンプル-3</title>
  <link rel="stylesheet" type="text/css" href="manyo.css" />
  </head>

  <body>
  <p align="center">万葉集第1巻抜粋: 作者不明の歌を表示しない</p>

  <xsl:apply-templates />

  </body>
</html>
</xsl:template>

<xsl:template match="poem">
<table border="0" width="500" align="center">

  <xsl:choose>
  <xsl:when test="poet='作者不明'">
  </xsl:when>


  <xsl:otherwise>
    <tr>
    <th>歌番号: <xsl:value-of select="pno" /></th>
    <th><xsl:value-of select="poet" />の歌</th>
    </tr>
    <tr>
    <td colspan="2">原文: <xsl:value-of select="mkana" /></td>
    </tr>
    <tr>
    <td colspan="2">読み: <xsl:value-of select="yomi" /></td>
    </tr>
    <tr>
    <td><xsl:value-of select="mean" /></td>
    <td>
      <img>
      <xsl:attribute name="src">
      <xsl:value-of select="image" />
      </xsl:attribute>
      </img>
    </td>
    </tr>
  </xsl:otherwise>
  </xsl:choose>


</table>

</xsl:template>

</xsl:stylesheet>

さらら: こうして見てみると意外に簡単なのね。

たけち: じゃあ、このXSLテキストを"choose.xsl"というファイルにして、実際にどうなるか見てみようね。次のテキストをクリックしてみて。あっ、そうそう。いつもと同じように、2行目は
<?xml-stylesheet type="text/xsl" href="choose.xsl"?>
として、"basic4.xml"というファイルを作成しているからね。また、"image"フォルダーを作って、そこに必要なイメージファイルを入れてあるからね。

万葉集第1巻抜粋のXMLファイル choose.xml(上記説明のXSLT適用)

xsl:chooseのサンプル結果表示

さらら: へぇ〜、おもしろいわねぇ。確かに、前回のサンプルでは表示されていた「作者不明」の歌、二つが表示されなくなっているわ。。。。。なんだか、XMLとXSLスタイルシートを使ってもっといろいろなことができそうな気がするわ。

たけち: そうなんだよ。でも、それなりに難しくなるけどね。

さらら: それでもいいわ。完全には分からなくても、見ているだけでたのしいもの。 (^ ^)

たけち: そうかぁ。じゃあ、僕ももうすこし気楽にいろいろなことをお話してみるね。次回もよろしく。

さらら: えぇ、よろしくね。

→次回はリンクの設定です。。。(^ ^)v