サンプルで覚えるXSLTプログラミング
1.XSLTによるHTMLへの変換まずは実際に、XML文書をXSLTのスタイルシートによってHTMLに変換する例をみてみましょう。XMLからHTMLへの変換は、XSLTの典型的な使用例だと言えます。
元になるXML文書
|
まずは、XSLTとはどんな処理をするものなのか、処理の内容を説明するための簡単なサンプルとして、上記のXML文書から従業員名のみを取り出してHTML化するスタイルシートを紹介しましょう。その前に、上記のXML文書にスタイルシートを当てる方法として、ここでは上記の2行目に
<?xml-stylesheet type="text/xsl"
href="stylesheet1.xsl"?> |
この1行を入れてXSLTプロセッサに渡すとします。これは、このXML文書を下記のスタイルシートで処理するを指定しています。指定されているスタイルシート「stylesheet1.xsl」が、下記です。
HTML化を行うスタイルシート<?xml version="1.0" encoding="Shift_JIS"?> |
このスタイルシートをかぶせた実行結果を見てもらいましょう。次のようなHTML文書が生成されます。
<HTML> |
で、ご想像の通り、Webブラウザでは以下のようになります。
XSLTによって出力されたHTML文書を表示させた |
スタイルシートはどのように解釈されるか
では、スタイルシートがどのようにXML文書をHTML化したか説明していきましょう。まず、スタイルシートの2行目と3行目のタグについて説明しなければなりません。
“<xsl:stylesheet
”で始まる行は、自分自身がスタイルシートであることを定義する行です。一部のXSLTプロセッサでは、ここで定義されているものより古いXSLT仕様を使用しているものもありますが、後述するオラクルのXSQLに含まれるXSLTプロセッサを使う場合は、上記から変更は不要です。“<xsl:output
”で始まる行も、日本語をShift_JISで使用する場合は特に変更はいりません。
それ以後の一連の処理を順に追っていきましょう。
- まず、XML文書のドキュメントルート“/”を見つけると、スタイルシート側では“/”テンプレート(
<xsl:template match="/">
)に入ります。
- スタイルシートでは次の行に<xsl:apply-tempaltes/>があります。XML文書の次のタグが<PAGE>なので、スタイルシートの“PAGE”テンプレート(
<xsl:template match="PAGE">
)に移ります。そこで、スタイルシートから<HTML> <BODY>が出力されます。
- スタイルシートでは再び<xsl:apply-templates>タグがあります。XML文書の次の行は<EMPLOYEES>タグですので、こんどはスタイルシートの“EMPLOYEES”テンプレート(
<xsl:template match="EMPLOYEES">)へ処理が移ります。
- EMPLOYEESテンプレートでは、またもや<xsl:apply-tempaltes/>があります。そこで、XML文書の次のタグ“EMPLOYEE”に従って、スタイルシートの“EMPLOYEE”テンプレート
<xsl:template match="EMPLOYEE">へ移ります。
<xsl:value-of select="ENAME"/><BR/>
では、“EMPLOYEE”タグの子“ENAME”の値を取ってきて、その後に改行タグ<BR/>をいれるように指示されています。ですからここで「佐野力<BR>」 が出力されます。
- これで“EMPLOYEE”テンプレートは終わるので、“EMPLOYEES”テンプレートに戻ります。そしてまたXML文書での2つめの<EMPLOYEE>タグで、“EMPLOYEE”テンプレートが実行され、「高橋敦子<BR>」が出力されます。
- 上記の動作をXML文書内のすべての<EMPLOYEE>タグに対して行ったあと、また“EMPLOYEES”テンプレートに戻り、さらに“PAGE”テンプレートに戻り、残りの
「 </BODY> </HTML>」 が出力されます。
- “/”テンプレートに戻り、すべての処理を終了します。
入力のXML文書、XSLTスタイルシート、HTML出力の3つがからんでややこしいかもしれませんが、数をこなせばすぐに理解できるようになります。いまはすべて理解しようとせず、大体の流れをつかむことができればいいでしょう。
実は、これだけの出力なら下記のようなもっと簡単な方法があります。
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:template match="/"> <xsl:template match="EMPLOYEE"> </xsl:stylesheet> |
このようなXSLTスタイルシートでも、ここでの例のXML文書を使用するかぎり同様の結果を得ることができますが、両者は同値(インプットするXMLが同じ限り同じ出力を出す)ものではありませんので注意してください。
XSLTスタイルシートの初級編はこれで終わりです。続いて、XSLTのスタイルシートを作成するうえで不可欠なXPathについて、そして、スタイルシートで使うタグや関数について説明していきます。
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」の詳細も紹介する
|
|