OracleでXMLを活用する
XSQLプログラミング入門
第1回 XSQLの紹介と基本的な使用法
データベースとXMLを組み合わせてアプリケーションに利用する、というニーズが高まっている。データベースの出力をXML化することにより、HTML化やその他のレポート形式、他のアプリケーションへの転送など、データの柔軟性が飛躍的に高まるからだ。XSQLはそのキーテクノロジーとなる。
小山尚彦、Chienowa.comチーム
日本オラクル株式会社
2000/6/30
XSQLとは、XML+SQL |
米OracleはOracleデータベース上で稼働するさまざまなXML開発環境を、この1、2年で開発してきました。なかでも同社のSteve Muenchによって開発された「XSQLサーブレット」は、データベースに対するXMLのインターフェイス言語として重要な位置にあります。
このXSQLサーブレットはOracleの次期バージョンとして予定されているOracle8i version8.1.7から標準装備され、データベース内にあるサーブレットコンテナに格納される予定です。そこで、本記事ではこのXSQLに焦点をあて、XSQLとはいかなるものなのか、について解説していきましょう。
XSQLのオフィシャルデモサイトでは、XSQLサーブレット上で稼働するXSQL言語で書かれたプログラムによって生成されたWebページと、XSQL関連資料が用意されています。この記事をお読みになってさらにXSQLの詳細を知りたい場合には、ぜひ参照してみてください。
また、XSQLの実行環境はすでに公開されているため、Oracle8iの利用者であればこの記事の後半で紹介する環境を用意することにより実際に動作を試すことができます。データベースをお持ちでない方もOracle8iをOracle Technology Networkよりダウンロードして試用することができます。
では、解説を始めましょう。
■XML形式への出力言語
筆者が所属する日本オラクルの「ドットコム事業開発部」では、ナレッジを交換する目的のWebサイト「chienowa.com」(知恵の輪ドットコム)を開発してきました。chienowa.comは、その内部でXMLの技術をフルに活用したWebサイトです。筆者はこのchienowa.comを開発するにあたってこれまで数か月間XSQLと付き合ってきました。その経験からXSQLを簡潔に説明するならば、
「XSQLとはデータベース内のデータをアプリケーションサーバーを通じてXML形式に出力するための言語」
だと言えます。
XSQLが開発された背景には、データとスタイルを独立させ、開発工程を、データに関する開発と、スタイルに関する開発に2分化する、という目的がありました。
これまで、データベースと連係したWebサイトを構築するには、比較的高度な知識を必要としました。しかし、このような開発を行うプログラマは、プログラミングは得意でも、見栄えのよいWebページを作成できるかというと、必ずしもそうではありません。見栄えの部分は、専門のデザイナーなどにまかせるべきなのですが、デザイナーはプログラミングができないため、開発に参加することができないのです。
しかし、XSQLの登場のおかげで、この問題が解決するかもしれません。データベースまわりの開発は、比較的開発者の多いSQLを理解できる人たちで行い、デザインはHTMLの知識があれば比較的容易に学習できるXSLの知識がある人たちで進めることができるようになります。現在のところXSLを使いこなせるWebデザイナーは少ないでしょうが、これから半年ほどで商用のWebデザインツールなども登場してくるでしょう。そうすれば、XSLのスキルを持ったデザイナーも登場してくるでしょう。
Javaでのデータベース開発は、JDBCとServletの両方の知識が要求されるため、一部のエンジニアだけが開発に参加できた。XSQLでは、SQLのエンジニアとXSLのエンジニアが協力して開発に参加できる |
XSQLを利用してデータベースから出力されたXML文書は、XSLで表記されたスタイルシートによって他の形式のXML文書、たとえばXHTML(XML標準化されたHTML)、やWML(携帯端末用に標準化されているXML言語)などに変換することができます。つまり、PCで稼働するWebブラウザからでも、iモードからでも、それぞれのクライアントに最適な表示をさせることが可能です。 これは、XSQLサーブレットにはUser-Agent(サーバーにアクセスしてくるクライアントの種類を識別するための文字列)を認識し、クライアントに最適なスタイルシートを選ぶことができる機能が備わっているからです。
もちろんXSQLの用途は、人間の目で見えるWebページだけにとどまりません。例えば、XMLによる企業間のEDI(電子データ交換)やコンテンツ配信ビジネスにも広く使われていくことが予想されます。
かなり抽象的な部分が多い説明になってしまいました。次の章では簡単な例を使用して、XSQLを説明しましょう。
XSQLのプログラム例 |
この章では、簡単なプログラム例を使用してXSQLの概念を理解していただきましょう。それぞれのXSQLタグに関する個別の解説は、次回に行う予定です。ここではXSQLのプログラムをいくつか実際に見ていただくことを主眼にします。
例として使用するデータベース表は以下のようになっています。従業員のテーブル「EMP」と、部門のテーブル「DEPT」の2つです。
テーブルDEPTの定義
|
テーブルEMPの定義
CREATE TABLE EMP ( |
データの中身は以下のようになっています(データは架空のものです)。
テーブルDEPTの内容DEPTNO | DNAME | LOC |
10 | 社長室 | GC18F |
20 | 営業部 | GC12F |
30 | e-business | GC14F |
40 | 教育本部 | 用賀 |
50 | 人事部 | Forum |
テーブルEMPの内容
EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |
1 | 佐野力 | President | 1990-04-01 | 10000 | 10 | ||
600 | 佐藤聡俊 | VP | 1 | 1995-04-01 | 8000 | 30 | |
50 | 高橋敦子 | Director | 600 | 1991-04-01 | 6000 | 30 | |
1001 | 本丸達也 | Analyst | 50 | 1997-09-01 | 3200 | 30 | |
1201 | 砂金信一郎 | Analyst | 50 | 1998-04-01 | 3100 | 30 | |
1401 | 小山尚彦 | Analyst | 50 | 1999-09-01 | 3000 | 30 |
■XSQLでデータベースを検索する
まず、これらのデータが「tkoyama」という接続名で定義されるデータベースに格納されているとします(lib\XSQLConfig.xmlというファイルの<connection/>で定義しておきます)。このデータをそのままXML文書として出力する、XSQLプログラムをまずはご覧いただきましょう。
データを検索するXSQLプログラム
|
このようなXSQL文を実行することで行えます。 上記のプログラムで、xmlns:xsql="urn:oracle-xsql"を必ず入れておかなければならない点にご注意ください。
このXSQLプログラムの出力は次のようになります。
出力されたXML文書
|
<xsql:query>のタグ内で、デフォルトのROWSETとROWがEMPLOYEESとEMPLOYEEにそれぞれ書き換えられていることに注目してください。
■引数を用いた動的な検索
今度は<xsql:query>内のSQL文に引数を渡す方法を紹介しましょう。以下に例を示します。
引数を渡せるXSQLプログラム
|
p_empnoが変数となっているのがお分かりでしょう。このXSQLプログラムをp_empno=1を引数として呼び出すと、次のような結果が得られます。
出力されたXML文書
|
目次 |
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」の詳細も紹介する
|
|