Webアプリ開発事始 第19回

XMLとWebアプリケーション(2)
~データベースとXML
長谷川裕行
有限会社 手國堂

複数レコードの表示方法

先に紹介したリスト3のように、複数レコードを記録したXMLの内容を画面表示するには、XSLの書き方もそれに合わせて変えなければなりません。と言うより、本来は複数レコードが記述されているのが当たり前ですから、以下に紹介する書き方の方が一般的です。


- レコードの件数分繰り返す -

データベースのレコードセットのように基本の構造を複数回繰り返すXMLでは、それを表示するXSLの書き方も少し変わってきます。通常、すべてのレコードを同じ体裁で表示しますから、その中の個々のフィールドの値は

  項目名:内容

といった形となるでしょう。これがフィールド数の分繰り返されて1件のレコードが表示され、さらにその形態がレコード数の分だけ繰り返されます。


- パターンマッチングでフィールドを取り出す -

このように、複数の項目を区切って表示させたい場合、パターンマッチングを使って項目ごとに表示方法を指定できます。

  <xsl:template match="/">
      :
   <xsl:apply-templates select="//*" />
      :
  </xsl:template>

“//*”はルート要素以下のすべての階層のすべての項目を示します。xslテンプレートの記述はこれだけです。“//*”の箇所を書き換えれば、特定のレコードだけを抽出することもできます(本記事のテーマから離れていくので、ここでは割愛します)。

その後、それぞれの項目(子要素)について個別に表示方法を指定します。このとき、HTMLタグが使用できます。

「氏名」要素を太字で表示するなら、以下のように記述します。

<xsl:template match="氏名"> (1)
  <DIV>
  ●氏名:<B> (2)
   <xsl:value-of/> (3)
  </B>
  </DIV>
</xsl:template>

(1) パターンマッチングで「氏名」要素だけを取り出す
(2) HTMLの<B>タグで太字を指定
(3) 該当する要素の値を表示

リスト6は、先のmembers02.xmlとmembers03.xmlの内容(中身自体はどちらも同じです)をブラウザで表示するためのXSMです。「番号」の要素だけが太字になります。

画面1が、それをInternet Explorerで表示させた結果です。

リスト6:複数のレコードを表示するスタイルシート~members02.xsl



トップページ
XMLとテーブルの構造
DTDとデータ構造の定義
複数レコードの表示方法
レコードの件数分繰り返す
パターンマッチングでフィールドを取り出す
表形式でレコードを表示する
あとがき

Copyright © GrapeCity inc. All rights reserved.