OracleでXMLを活用する
XSQLプログラミング入門
第1回 XSQLの紹介と基本的な使用法
(2ページ)
データの挿入と ストアドプロシージャの実行 |
<xsql:query>のほかにもXSQLにはさまざまなタグが用意されています。 この章では<xsql:query>タグ以外のタグ数種類を簡単に紹介します。
まず、<xsql:dml>ではINSERT文の実行、およびストアドプロシージャ(データベース内に格納されているプログラムのこと。OracleではPL/SQLという言語が使われています)を呼び出すことができます。
例えば次のように、
データベースへのデータの追加
|
としてemp表に新しい列を挿入したり
ストアドプロシージャの呼び出し
|
というようにストアドプロシージャーを呼び出すこともできます。ここでひとつ注意していただきたいのは<xsql:dml>タグでは“;”(セミコロン)が文の最後に必要になっていることです。
またおなじようにOracle Application Serverで使われていたPL/SQLカートリッジの出力メソッドのhtp.print文を使用することによりプロシージャーからのフィードバックを得ることができます。例えば、
PL/SQLによるストアドプロシージャの定義
|
というプロシージャを、XSQLにより
XSQLによるストアドプロシージャの呼び出し
|
と呼び出すことにより
ストアドプロシージャの呼び出し結果
|
という出力を得ることができます。この方法はエラー処理などに非常に有効です。
XSLTスタイルシートとの組み合わせ |
ここまではデータベース内のデータをXML文書として出力する方法について重点的に説明してきました。この章ではXSQLで得られたXMLを、XSLTというスタイルシート言語を使用してXHTMLに変換し、Webブラウザで表示する方法について説明しましょう。
■HTMLを出力するXSQLプログラム
このように説明すると複雑に聞こえるかもしれませんが、単にHTML形式で出力するだけのことです。この章のポイントはXSLTの説明ではなくXSQLプログラムでXHTMLによる出力ができるということですので、XSLTの詳しい説明についてはこのシリーズ外で説明させていただきたいとおもいます。
ここでは先ほどのXSQLプログラムをもう少し複雑にしたものを使ってみましょう
スタイルシートを利用するXSQLプログラム
|
2行目で「emp_info.xsl」というファイル名のxsltスタイルシートが指定されているのに注目してください。そのスタイルシートが下記です。
XSLTスタイルシート
|
ここでは予備知識として簡潔にXSLT言語について説明しておきましょう。
4行目の <xsl:output method="html" encoding="Shift_JIS"/>で、このスタイルシートを利用して出力される文書は、HTML形式でShift_JISエンコードされていると宣言しています。
次の<xsl:template match="/">で、XSLTプロセッサーはXML出力の<page>に移動します。 それからは単にその下5行(青い文字になっています)を出力バッファに書き込みます。
その下の<xsl:apply-templates select="//EMPLOYEES/EMPLOYEE"/>では、<EMPLOYEE>タグの出現ごとに<xsl:template match="//EMPLOYEES/EMPLOYEE">を処理します。
<xsl:template match="//EMPLOYEES/EMPLOYEE">の行では、<EMPLOYEE>の子供タグ: <EMPNO>, <ENAME>, <JOB>, <SAL>, <MANAGER>, <HIREDATE>, <DNAME>, <LOC>の値を、<xsl:value-of>タグで取得し置き換えています。
このスタイルシートを適用することによって以下のHTML文書が得られます。
出力されたHTML文書
|
HTMLをWebブラウザで見たところ
XSQLの動作の仕組み |
XSQLプログラムは、実際にはサーブレットエンジン上のサーブレットとして動作します。その一連の動きを、図によって簡単に説明しましょう。
- ユーザーがemp_info.xsqlを呼び出します
- XSQLサーブレットがJDBC接続でデータベースに問い合わせをします
- データベースが結果をXSQLサーブレットに返します
- XSQLサーブレットが、結果をXML文書とemp_info.xslをXSLTプロセッサーに渡します
- XSLTプロセッサーはそのXML文書を、emp_info.xslの命令をもとにXHTMLを生成します
- XSQLサーブレットはそのXHTMLをサーブレットエンジンを通じてユーザーのWebブラウザに渡します。
XSQLの動作環境 |
最後に、XSQLの動作環境について簡単に説明しておきます。XSQLサーブレットを動作させるためにはJDKが必要です。さらに、XSQLサーブレットを格納するサーブレットエンジンと、データを格納するデータベース、データベースとXSQLサーブレットをつなぐJDBCドライバーが必要となります。サーブレットエンジン(Applicationサーバー)とデータベースサーバーは同じシステム内で共存していても問題ありません。
XSQLに必要なJDK
- JDK1.1.8
- JDK1.2.2
XSQLがサポートされているサーブレットエンジン
- Allaire Jrun 2.3.3
- Apache 1.3.9 と Jserv 1.0 もしくは1.1
- Apache 1.3.9 と Tomcat 3.1
- Tomcat 3.1
- Caucho Resin 1.1
- Oracle8iLite Web-to-Go Server
- Oracle Application Server 4.0.8.1(JSPパッチ)
この中では比較的セットアップの簡単なApacheなしのTomcat3.1を推奨します。8i version8.1.7ではサーブレットをデータベース内に格納するServlet Containerが搭載されXSQLサーブレットはこの内部に格納されます。
XSQLがサポートされているJDBCドライバーとデータベース
- Oracle8i 8.1.5 と JDBC 1.x プラス nls_charset.zip
- Oracle8i 8.1.6 と JDBC 1.x プラス nls_charset.zip
- Oracle8i Lite4.0 と JDBC 1.x プラス nls_charset.zip
- Oracle8i 8.1.6 と JDBC 2.0 プラス nls_charset.zip
現在Oracle8でも<xsql:include-owa>以外のタグは使えることがわかっていますがOracle8i 8.1.5とJDBC 1.x以上で使用されることを推奨します。nls_charset.zipは文字のエンコーディングを正しく行うのに必要ですので、JDBCと同様にClasspathに入れておいてください。
次回はXSQLタグの詳細について掲載させていただきます。
参考サイトおよび文献
- Oracle Technology Network/XML
- W3C
- 「Oracle XSQL Pages and the XSQL Servlet Release Note for version 1.0.0.0」Muench, Steve 2000
- 「Practical Transformation Using XSLT and XPath, Seventh Edition」 Crane Softwrights Ltd. 2000
- 「XSLT Programmer's Reference」 Kay, Michael 2000
更新履歴
2000/6/30 公開
2000/6/30 対応バージョンなどについて一部変更
目次 |
1ページ XSQLとは、XML+SQL XML形式への出力言語 XSQLのプログラム例 XSQLでデータベースを検索する 引数を用いた動的な検索 2ページ データの挿入とストアドプロシージャの実行 XSLTスタイルシートとの組み合わせ HTMLを出力するXSQLプログラム XSQLの動作の仕組み XSQLの動作環境 |
「連載 XSQLプログラミング入門」 |
- 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」の詳細も紹介する
|
|