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

2001年1月14日(日)更新


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

たけち: 前にxsl:choose, xsl:when, xsl:otherwiseっていうのを使って、XMLテキストの内容を判断して、表示するしないを指定するサンプルを作ったよね。覚えてる?

さらら: あっ、そっ、そういうのあったわね・・・・ (^ ^;

たけち: xsl:ifっていうのを使って、同じようなことができるんだ。それを使って、今回は万葉集XMLテキストのなかから、さらら(持統天皇)の歌だけを表示してみよう。

さらら: あら、たけちったら気を使ってくれてるのね。

たけち: まぁね。さららの歌だけを判断するのは、<作者>タグ</作者>タグで囲まれたテキスト(内容)が'持統天皇(じとうてんのう)'かどうかを調べればいいんだ。そのときだけ歌の内容を表示するようにすればいいよね。

さらら: うんうん。 (^ ^*

たけち: 確認のために次に説明図を載せておくね。

さららの歌だけを表示

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

さらら: うん。わかるわ。早くXSLのリストを見てみたいわ。・・・ (^ ^;

たけち: そうだね。じゃあ、次にいつものようにリストを載せるね。

<?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:if test="作者[.$eq$ '持統天皇(じとうてんのう)']">
<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:if>
</table>
</xsl:for-each>
</xsl:template>


</xsl:stylesheet>

さらら: なるほどねぇ。

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

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

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

さらら: へぇ〜、おもしろいわねぇ。確かに、私の歌だけ表示されているわ。。。。。。ひとつだけだから、ちょっと寂しいけど。 (^ ^;

たけち: 巻2の歌もいれればよかったかな?!

さらら: あっ、いいのよ。。。。。ところで、XSLの指定がxsl:choose, xsl:when, xsl:otherwiseっていうのより、なんだかすっきりしているように見えるわ。使い方はどう違うのかしら。

たけち: うん。どっちでもおんなじことができるんだけど、たとえば今回の場合で言うと、額田の歌・さららの歌・人麻呂の歌でそれぞれ表示の仕方を変えたいようなときは、xsl:chooseを使うとすっきり見えるかもね。

さらら: ふう〜ん。そうなんだぁ。

たけち: じゃあ、今回はここまで。

さらら: はぁい。 (^ ^*

→さらに続きます。。。(^ ^)v