サンプルで覚えるXSLTプログラミング

5.変数系XSLTエレメント

 変数系のタグを使うと、実行中に値を動的に変更できる変数を、スタイルシート中で使えるようになります。


 変数の定義1
 <xsl:variable>

属性名 属性値 機能
name 文字列 変数の名前で必須です。
select XPath表現 表現の内容が変数に割り当てられます。

例:<xsl:variable name="number_of_prefectures" select="count(//prefecture)"/>


 変数の定義2
 <xsl:param>


属性名 属性値 機能
name 文字列 変数の名前で必須です。
select XPath表現 表現の内容が変数に割り当てられます。

<xsl:varia ble>と<xsl:param>は、ほぼ同等です。


 下記の「prefectures3.xsl」では、変数number_of_prefecturesをcount関数を使用して定義し、値を設定しています。設定された変数number_of_prefecturesは、<xsl:value-of select="$number_of_prefectures"/>によって呼び出されています。

 このスタイルシートでは「出力2」が得られます。 countなどの関数については、次回で紹介する予定です。ここでは単にcount(//prefecture)という表現が入力されたXML文書、「prefectures.xml」内にある“prefecture”というタグの総数を数えるものだと理解してください。

prefectures3.xsl(都道府県を数えるスタイルシート)

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


  <xsl:variable name="number_of_prefectures" select="count(//prefecture)"/>

  <xsl:template match="/prefectures">
    <HTML>
    <BODY>
    <xsl:value-of select="$number_of_prefectures"/>
    </BODY>
    </HTML>
  </xsl:template>

</xsl:stylesheet>

出力2(結果)

<HTML>
<BODY>
47
</BODY>
</HTML>

 <xsl:variable>タグの代わりに<xsl:pram>タグを利用しても、まったく同様の結果が得られます。

 例として示したファイルは下記からダウンロードできます。


Index
サンプルで覚えるXSLTプログラミング
  1. XMLからHTMLへの変換
スタイルシートはどのように解釈されるか
  2. XPathの基礎知識
XML文書をツリー構造で見る
XPathの表記方法
  3. XSLTエレメントの概要
コラム XSLTプロセッサのインストール
  4. テンプレート系XSLTエレメント
テンプレートの定義
該当するテンプレートの適用
指定されたテンプレートの呼び出し
5. 変数系XSLTエレメント
変数の定義1
変数の定義2
  6. 出力系XSLTエレメント
該当する表現の値を代入
エレメントノードの生成
属性ノードの生成
テキストノードの生成
コメントノードの生成
PI(processing-instruction)の生成
出力方法の指定
  7. フローコントロール系XSLTエレメント
ループ処理
条件分岐
IF文
  8. その他のXSLTエレメント
他のXSLファイルの読み込み
数の割り当て
  9.XSLT関数の概要
関数の主な分類
  10. 文字列系関数
文字列の連結
文字列の調査
数字のフォーマッティング
空白の除去
……
  11. 数値計算系関数
切り上げ
表現の数を数える
切り下げ
数値型への変換
四捨五入
加算
  12. ノードに関する関数
  13. bool代数系関数
  14. その他の関数
  15. JavaによるXSLTの拡張
Built-inクラスの呼び出し
カスタムメイドの関数を作る


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)
- PR -

注目のテーマ

HTML5+UX 記事ランキング

本日月間
ソリューションFLASH