サンプルで覚えるXSLTプログラミング
7.フローコントロール系XSLTエレメント
フローコントロールタグをうまく使用すると、簡潔にスタイルシートをまとめあげることが可能です。繰り返しの処理は<xsl:for-each>などでできますし、条件分岐には<xsl:if>などが使用できます。
ループ処理
<xsl:for-each>
属性名 | 属性値 | 機能 |
select | XPath表現 | 作業を繰り返すノードの表現を記入します。 |
下記のスタイルシート「prefectures6.xsl」では、ループ処理の例として<xsl:apply-templates>を使用せずに、<xsl:for-each>と<xsl:call-template>を組み合わせて、出力1と同様の結果を出力します。
prefectures6.xsl(結果は出力1と同等)
<xsl:template match="/prefectures">
|
条件分岐
<xsl:choose>、<xsl:when>と<xsl:otherwise>
C言語でいうswitch、case, default処理を行います。
<xsl:choose>と<xsl:otherwise>には属性はありません。
属性名 | 属性値 | 機能 |
test | 表現 | ブール値で返される表現を記入します。 |
下記のスタイルシート「prefectures7.xsl」では、<xsl:choose>ブロック内で<prefecture>エレメントの属性ノード“id”が1ならば“北海道”、それ以外で8以下ならば(すなわち2以上8未満ならば)“東北”というように地方名を書き込みます。デフォルトは<xsl:otherwise>で指定されているように“九州”です。このスタイルシートによる出力は「出力4」のようになります。
prefectures7.xsl<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:template match="/prefectures">
|
出力4<HTML> |
IF文
<xsl:if>
“test”の値がTrueのときに、処理を実行します
属性名 | 属性値 | 機能 |
test | 表現 | ブール値で返される表現を記入します。 |
スタイルシート「prefectures8.xsl」ではkm四方あたりの人口密度が1000人を超える都道府県を<xsl:if test="population div area>1000">で選び出してています。 人口密度の高い都道府県が「出力5」のように得られます。
prefecture8.xsl(人口密度が1000人を超える都道府県を選ぶ)<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:template match="/prefectures">
|
出力5<HTML> |
このように、フロー制御を組み込むことによって高度な処理をすることが分かったと思います。ここでもconcat関数が出てきましたが、通常、属性“test”では関数を多用します。これらおもな関数とその使用法については、次回に説明します。
例として示したファイルは下記からダウンロードできます。
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クラスの呼び出し カスタムメイドの関数を作る |
- QAフレームワーク:仕様ガイドラインが勧告に昇格 (2005/10/21)
データベースの急速なXML対応に後押しされてか、9月に入って「XQuery」や「XPath」に関係したドラフトが一気に11本も更新された - XML勧告を記述するXMLspecとは何か (2005/10/12)
「XML 1.0勧告」はXMLspec DTDで記述され、XSLTによって生成されている。これはXMLが本当に役立っている具体的な証である - 文字符号化方式にまつわるジレンマ (2005/9/13)
文字符号化方式(UTF-8、シフトJISなど)を自動検出するには、ニワトリと卵の関係にあるジレンマを解消する仕組みが必要となる - XMLキー管理仕様(XKMS 2.0)が勧告に昇格 (2005/8/16)
セキュリティ関連のXML仕様に進展あり。また、日本発の新しいXMLソフトウェアアーキテクチャ「xfy technology」の詳細も紹介する
|
|