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

3.XSLTエレメントの概要

 XSLTでスタイルシートを作成するには、さまざまなエレメント(いわゆるタグ)を使いこなす必要があります。ここでは、その主要なタグを紹介していきましょう。

 ここから説明するタグはおもに、テンプレート系、変数系、出力系、およびフローコントロール系の4種類に分かれます。テンプレート系タグはテンプレート(処理のマクロ)の宣言および呼び出しに関するタグ群です。次の、変数系タグは変数の定義する際に使用されるタグ群です。これらは頻繁に同じ数値を使用したりする際に便利です。そして出力系タグはXML文書を出力するときに使用するタグ群です。出力系のタグは非常に重要ですとくに<xsl:value-of>や<xsl:attribute>は頻繁に使用されることが多いでしょう。

 フローコントロール系タグは処理の流れを制御するタグ群です。フローコントロールタグをうまく使用することで簡潔にスタイルシートをまとめあげることが可能です。最後には、今回これらの分類に当てはまらなかったタグについてもいくつか紹介します。分類に関しては下記の表を参照してください。

分類 タグ
テンプレート系 <xsl:template>
<xsl:apply-templates>
<xsl:call-template>
変数系 <xsl:variable>
<xsl:param>
出力系 <xsl;value-of>
<xsl:attribute>
<xsl:comment>
<xsl:element>
<xsl:processing-instruction>
<xsl:text>
<xsl:output>
フローコントロール系 <xsl:choose>
<xsl:for-each>
<xsl:if>
<xsl:otherwise>
<xsl:when>
その他 <xsl:import>
<xsl:include>
<xsl:number>

 この他にも<xsl:strip-space>、<xsl:preserve-space>、 <xsl:sort>、<xsl:key>、 <xsl:fallback>、<xsl:attribute-set>、<xsl:namespace-alias>などがありますが、今回の記事の対象外とします。また、今回の記事では初級、中級者を対象としているため、正確性よりも分かりやすさに重点をおきました。その点をご了承ください。

コラム XSLTプロセッサのインストール


 XSLTプロセッサはさまざまなメーカーからリリースされていますが、ここではオラクルが提供しているOracle XSLT Processorの導入方法を紹介しましょう。これを利用すれば、この記事で紹介したXSLTの動作を実際に確かめることができます。

 Oracle XSLT Processorは、Oracle XSQL Servletの一部として存在しています。使用の際には、Tomcatのようなサーブレットエンジンから呼び出すことも可能ですし、コマンドラインからも呼び出すことができます。 そこで、ここではOracle XSQL Servletの導入方法と利用方法について解説します。XSQL Servletは、Windows用とUNIX用があります。

 XSQL Servletは、technet.us.oracle.comから無料でダウンロードできます。稼働させるにはそのほかにJDKが必要です。日本語を使用されるには、最新のJDK1.2.2をおすすめします。JDKはサン・マイクロシステムズのjava.sun.comでダウンロードして、インストールしてください。ここではJDKがc:\JDK1.2.2や/user/local/lib/jdk1.2.2などにすでにインストールされているものとし説明させていただきます。

 ダウンロードしたXSQL Serlvetの入ったZIPファイルまたはtar.gzファイルは、適当なディレクトリで解凍してください。 解凍すると、xsqlディレクトリのすぐ下のbinディレクトリに、xsqlおよびxsql.batファイルがあります。Windowsをお使いの方はxsql.batを、UNIXをお使いの方はxsqlをカスタマイズして使用することになります。WINDOWS上ではXSQL.batファイルのJAVA_HOMEやXSQL_HOMEを設定します。UNIX上ではsetenv XSQLを、XSQLのディレクトリを指すように指定します。Windows版のサンプルを掲載しておきます。

@echo off
setlocal
set JAVA_HOME=J:\java
set XSQL_HOME=E:\xsql

REM Java JDK Runtime Classes
set CP=%JAVA_HOME%\lib\classes.zip

REM Oracle JDBC Driver Archive
set CP=%XSQL_HOME%\lib\classes111.zip;%CP%

REM Oracle XML Parser V2 (with XSLT Engine) Archive
set CP=%XSQL_HOME%\lib\xmlparserv2.jar;%CP%

REM Oracle XML SQL Utility for Java Archive
set CP=%XSQL_HOME%\lib\oraclexmlsql.jar;%CP%

REM Oracle XSQL Servlet Archive
set CP=%XSQL_HOME%\lib\oraclexsql.jar;%CP%

REM XSQLConnections.xml connection definition file
set CP=%XSQL_HOME%\lib;%CP%

jre -classpath %CP% oracle.xml.xsql.XSQLCommandLine %*
endlocal

 XSQL.batおよびxsqlでXSLTプロセッサを使うには、

xsql input.xml [-xml-stylesheet=stylesheet.xsl] > output.xml

 とすることでinput.xmlに指定されているスタイルシート、もしくはオプションの-xml-stylesheetで指定されたスタイルシートを当てはめた結果がoutput.xmlに吐き出されます。期待どおりの出力がされたかチェックするには、output.xmlファイルをWebブラウザなど適当なクライアントから呼び出してください。

 この手順が面倒な場合は、TomcatなどのServlet Engineを組み込んだWebサーバを利用すれば、クライアントに直接xsltの出力を入力することができます。Tomcatの詳しいインストール方法はXSQL Servletリリースノートに書かれています。Tomcatについてはhttp://jakarta.apache.org/
を参照してください。



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メールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間