XMLページをIEで表示させよう(基礎編): テキストの内容によって表示を変えよう

2000年8月13日(日)更新


■サンプルXMLテキストを表示する(6): 歌を表示(xsl:chooseでテキストの内容によって表示を変えよう(後半)

たけち: じゃあ、最初に説明したように、「作者不明」の歌を表示しないXSLのxsl:chooseの個所を図で説明するね。

作者不明の歌以外を表示

たけち: だいたい、雰囲気は分かるよね。

さらら: うん。わかるわ。で、これを使ったXSLの全部のリストを見てみたいわ。じつは、前回のXSLがどうだったか、あんまり覚えてないの・・・ (^ ^;

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

<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<html>
<head>
<title>たのしいXML: 基本サンプル-3</title>
</head>
<body>
<p align="center">万葉集第1巻抜粋: 歌のすべての要素を表示</p>
<xsl:apply-templates select="万葉集/巻" />
</body>
</html>
</xsl:template>

<xsl:template match="巻">
<xsl:for-each select="歌">

<table  border="0" width="500" align="center">

<xsl:choose>
<xsl:when test="作者[.$eq$ '作者不明']">
</xsl:when>

<xsl:otherwise>
<tr>
  <th>歌番号: <xsl:value-of select="歌番号" /></th>
  <th><xsl:value-of select="作者" />の歌</th>
</tr>
<tr>
  <td colspan="2">原文: <xsl:value-of select="原文" /></td>
</tr>
<tr>
 <td colspan="2">読み: <xsl:value-of select="読み" /></td>
</tr>
<tr>
  <td><xsl:value-of select="意味" /></td>
  <td>
   <img>
   <xsl:attribute name="src">
   <xsl:value-of select="イメージ" />
   </xsl:attribute>
   </img>
  </td>
</tr>
</xsl:otherwise>

</xsl:choose>
</table>
</xsl:for-each>
</xsl:template>


</xsl:stylesheet>

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

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

こんな風に表示されます・・・

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

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

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

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

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

→XSLの書き方、さらに続きます。。。 (^ ^)v