サンプルで覚えるXSLTプログラミング
15. JavaによるXSLTの拡張
ここまで、さまざまなXSLTの関数を紹介してきましたが、プログラマの必要な関数のすべてがXSLTで定義されているとはかぎりません。もしも、必要な機能が不足している場合、Javaで関数を書き、それをXSLTプロセッサ上で使用することでXSLTの機能を拡張することができます。しかし、ここで説明するこの機能はXSLTプロセッサの標準ではないため、すべてのXSLTプロセッサで使用できるわけではありませんので、その点に注意してください。
Built-inクラスの呼び出し
まずは、あらかじめオラクルのXSLTプロセッサに用意されている、JavaのBuilt-inクラスをXSLTプログラムから呼び出してみましょう。今回の主役はJavaの機能ですので、あえてXML文書中のデータを用意していません。
(XML文書:TestJAVAXSL.xml) |
(XSLTプログラム:TestJAVAXSL.xsl)
TestJAVAXSL.xsl
<xsl:output method="html"
encoding="Shift_JIS"/> <xsl:template match="/"> |
これを実行すると、
このような出力が得られます。Javaのプログラムが呼び出されて、文字列が表示されているわけです。
カスタムメイドの関数を作る
また、Built-inではなくカスタムメイドでJavaの関数を使用したい場合、例えば下記のように、static関数を持ったclassを作って呼び出すことができます。今回は簡単にjava.lang.Mathクラスのrandom()関数を呼び出しているだけですが、Javaで使用可能なあらゆるロジックを書き込むことが可能です。
(Javaプログラム:TestXSLTJavaExtention.java)
|
このJavaプログラムは、コンパイルした後xslt.jarとでもして、jarファイルにしておいて、ServletエンジンのCLASSPATHに入れておいてください。詳しい方法は、TomcatなどのServletエンジンのマニュアルを参照してください。
(XSLTプログラム:TestJAVAXSL2.xsl)<?xml version="1.0" encoding="Shift_JIS"?>
|
上記のXSLTプログラムで、Javaで定義した関数を呼び出すことができます。
以上で主なXSLTタグや関数を紹介しました。もちろんこのほかにもこの記事では紹介しきれなかったものがいくつもありますが、それらの使用法については下記の参照文献などを参照してみてください。
今回の連載XSLT入門の読者の皆様、特に「XSQL入門」から読んでいただいた方々、および編集者の新野氏とアットマーク・アイティに感謝いたします。また、違う連載で皆様に記事を読んでいただく機会があれば幸いです。
[参考文献およびサイト]
- http://www.w3.org/
- http://technet.oracle.com/xml
- http://www.oasis-open.org/cover/xsl.html
- http://www.phone.com/
- Crane Softwrights Ltd. 2000 "Practical Transformation Using XSLT and XPath" Seventh Edition
- Kay, Michael 2000 "XSLT Programmer's Reference"
- Muench, Steve 2000 "Oracle XSQL Pages and the XSQL Servlet Release Note for version 1.0.0.0"
- Crane Softwrights Ltd. 2000 "Practical Transformation Using XSLT and XPath" Seventh Edition
- Kay, Michael 2000 "XSLT Programmer's Reference"
|
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」の詳細も紹介する
|
|