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


小山尚彦、Chienowa.comチーム
日本オラクル株式会社
2000/8/22
2000/10/12(第9章以降追加)

 XMLは文書の記述の表記基準に過ぎません。ですから、XMLがその真価を発揮するにはさまざまな要素が必要です。例えば、XML文書のデータ構造を、XML文書をやり取りする人々のあいだで定義しておくことは大切です。そのために、DTDや最近ではXML SchemaというXMLデータ構造を表記する基準(スキーマ言語)が検討されています。

 また、XML文書をさまざまな形式に加工することも重要でしょう。しかも、 そのような加工の方法もXMLで書かれたならなおよいでしょう。 それがXSL(Extensible Stylesheet Language)です。

XMLを自由に加工できる

 XSLはXSLT(XSL Transformation)と、XSLF(XSL Formatting Objects)とに分けられていますが、XSLF(もしくはXSL-FO)はまだ規格が完全に固まっていません。一方、XSLTはすでに実装が始まっており、実行環境のXSLTプロセッサにはMicrosoftのMSXML、IBM AlphaworksのLotusXSL、Apache.orgのXalan、弊社OracleのXSLT Processor、オープンソースのSaxonやJim Clarks氏のXTなどがあります。また、SunのJAXPも、今秋にはXSLTをサポートする予定になっています。その他のXSLT関連のソフトウェアについて興味のある方はhttp://www.oasis-open.org/cover/xslSoftware.htmlをご覧ください。

 この連載で取り上げるのも、このXSLTになります。XSLTは汎用の変換言語と言っていいでしょう。XML文書をHTMLやプレーンテキスト、任意のXML文書などへと自由に変換して出力することができます。そして、変換のためのルールを記述していくことが、XSLTのスタイルシートのプログラミング、ということになります。

XSLTプロセッサで処理されるスタイルシートを記述することで、XML文書をさまざまな形式にコンバートできる。

 上の図にあるように、おなじXML文書を使ってもXSLTのスタイルシートを臨機応変に変えるだけで、クライアントに最適な入力をXSLTプロセッサが出力することができます。この際クライアントが何であるかはHTTPリクエストのUserAgent情報で認識し、それに応じたスタイルシートをもとにXMLを加工します。

 例えば、オラクルに関する株価と最新のニュースの見出しなどがXML文書に書かれていたとします。もしユーザーが音声で出力するクライアントなどからアクセスしていた場合、XSLTプロセッサは元のデータを音声系のXML文書に変換し、それをクライアントに返すことでユーザーは株価や最新のニュースを耳で聞くことができます。同じXML文書をWebブラウザからアクセスする人もいるでしょう。このときはHTMLに変換するスタイルシートが選ばれます。携帯機器、例えばiモードなどのクライアントでアクセスしたユーザーには、iモードなど小さい画面でも表示できるように工夫されたスタイルシートを元にデータにあてはめて出力することも可能です。

 次項からは、実際にXSLTでXML文書をHTMLに変換してみましょう。

 

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関数の概要 New!
関数の主な分類
  10. 文字列系関数 New!
文字列の連結
文字列の調査
数字のフォーマッティング
空白の除去
……
  11. 数値計算系関数 New!
切り上げ
表現の数を数える
切り下げ
数値型への変換
四捨五入
加算
  12. ノードに関する関数 New!
  13. bool代数系関数 New!
  14. その他の関数 New!
  15. JavaによるXSLTの拡張 New!
Built-inクラスの呼び出し
カスタムメイドの関数を作る


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

注目のテーマ

HTML5+UX 記事ランキング

本日月間