サンプルで覚える
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クラスの呼び出し カスタムメイドの関数を作る |
- 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」の詳細も紹介する
|
|