連載 XMLツールでプログラミング(1)
Javaで利用するXML開発ツール

赤木伸
日本オラクル株式会社
2000/7/28

 XML(Extensible Markup Language)は、1998年2月にW3Cが勧告して以来、急速にインターネットにおけるドキュメントやデータの標準になりつつある。XMLを利用したシステム構築も増えてくるだろう。しかし実際にプログラミングを始めようとした場合、XMLのファイルだけではどうすることもできない。何らかのツールを使う必要がある。

 この連載では、これからXMLを実際に利用してシステムを構築しようという方々のために、実際のXMLツールの利用を通してXMLやそのプログラミングについて知っていただくことを目的としている。

 利用するツールは、オラクルが配布しているXML Developer's Kit(XDK)だ。Oracle Technology Network、または日本オラクルのホームページからダウンロードできる。これらのツールは、Oracle8iや、Oracle Internet Application Server 8i(iAS)といったミドルティア、そしてクライアントなどで利用することができる。例えば、Oracle JServerを利用し、XDKのコンポーネントをデータベースの内部に組み込んで利用することができる。連載第1回の今回は、このXDKの紹介をお届けしよう。次回以降、具体的なプログラミングに入っていく。

   Oracle XML Developer's Kit(XDK)

 XDKは、開発者が簡単にXML対応のアプリケーションや、Webサイトを作成するのに必要なコンポーネント群のことである。XDKは、JavaやC、C++、PL/SQLなど複数の言語、またはプラットフォームをサポートしており、それぞれライブラリや、コマンドラインのユティリティ、ツールなどを提供している。XDKには、以下の4種類がある。

  • Oracle XML Developer's Kit for Java
  • Oracle XML Developer's Kit for C
  • Oracle XML Developer's Kit for C++
  • Oracle XML Developer's Kit for PL/SQL

 それぞれ、構成するコンポーネントに違いがあるが、ここでは、XDKの各コンポーネントについてJava用のものだけに絞って説明していく。Oracle XML Developer's Kit for Javaは、以下のコンポーネントから構成される。

  • XML Parser for Java v2
  • XML Class Generator for Java
  • XML Transviewer Beans
  • XSQL Page/Servlet
  • XML Schema Processor for Java

以下、それぞれを詳しく紹介する。

   XML Parser for Java v2
 最新版: Ver.2.0.2.8 (2000/5/19)

 XML Parserは、XML文書が文法的に正しいかどうかを解析し、ほかのアプリケーションにXML文書の内部構造へアクセスする手段を提供するもので、複数のAPIの総称である。また、XML文書が構造的に正しいか解析する際、DTDが内部または外部に定義されていれば、XML文書の妥当性も解析する。解析後、XMLの文書構造を表現したJavaのオブジェクトをDOM(Document Object Model)で作成する(図1)。

 Version 2以上のXML Parserでは、XSLT Processorを内蔵しており、XSLT(XSL Transformation)もサポートしている。このXSLTによって、XMLからXML、XMLからHTMLなど、事実上XMLからあらゆるテキストベースのフォーマットに変換することができる。

 このXML Parserは、DOMとSAX(Simple API for XML)の両方をサポートしている。また、ほかにもNamespace in XML、XSLT、XPathといったW3C(World Wide Web Consortium)などのさまざまな仕様もサポートしている。

図1 XML Parserの構造


   Oracle XML Class Generator for Java
 最新版: Ver.1.0.2(2000/5/19)

 XML Class Generatorは、DTDに基づいてクラスを生成するものである。各要素1種類ごとにそれぞれクラスを作り、そのクラスを用いることで、DTDに従った妥当なXML文書を生成することができる(図2)。例えば、すでにDTDがある場合などに、アプリケーション間でXML文書をやりとりするときなどに便利である。

図2 XML Class Generatorの構造

 XML ParserのDOM APIを使えばXMLを出力することは可能だが、コードはもっと複雑なものになってしまう。要素の操作といった複雑な処理をせずに、ただ単に、すでにあるDTDに従った妥当なXMLを出力したい場合には、XML Class Generatorを利用した方が圧倒的に簡単である。

   XML Transviewer Beans
 最新版: Ver.1.0.3 (2000/4/6)

 XML Transviewer Beansは、JavaアプリケーションやアプレットのためのXMLコンポーネントである。オラクルの開発ツール製品であるJDeveloperと容易に統合することができ、それにより、XMLを用いたデータベースアプリケーションの作成が容易になる(画面1)。Oracle XML Transviewer Beansは、以下のBeanで構成されている。

  • DOMBuilder Bean …… XML文書からDOM木構造を生成する。
  • XSLTransformer Bean …… XML文書を読み込み、指定されたXSLファイルに従って、形式を変換する。
  • XMLSourceView Bean …… XMLやXSLTで書かれたファイルを、シンタックスごとに色分けされた形で表示できる。
  • XMLTreeViewer Bean …… XMLで書かれたファイルを、 木構造としてグラフィカルに表示できる。木構造の各ノードは、マウスを使って操作することができる。
  • XMLTransformPanel …… XMLにXSLTファイルを適用し、その結果を表示する。XMLやXSLファイルの編集も可能。


画面1 XML Transviewer Beansを利用したアプリケーションの例


   XSQL Page/Servlet
 最新版: Ver.1.0.0.0 (2000/5/19)

 XSQL Page/Servletは、WebサーバのServletとして動作するツールである。「.xsql」という拡張子のファイルに<xsql:query>〜</xsql:query>というタグを埋め込み、その要素の内容として、つまり開始タグと終了タグの間に、SQL文を書くことができる。ユーザーが「.xsql」ファイルにアクセスしたときに、そのSQL文が解釈され、その問い合わせ結果をXMLで出力する(拡張子は、Webサーバーの設定で変更可能)。また、「.xsql」ファイル内でスタイルシートを指定しておくと、そのスタイル定義に従ってHTMLなどに変換を行ってくれる。

XSQL Servletの動作は以下のように行われる(図4)。

  1. ユーザーが「.xsql」ファイルにアクセスする。(例えばhttp://demo1.demo.com/xsql/emp.xsql)
  2. XSQL Servletが「.xsql」ファイルを読み込む。
  3. 「xsql:query」タグ内のSQL文でデータベースに問い合わせを行う。
  4. 結果をXML形式に変換する。
  5. 「.xsql」ファイル内でHTMLへの変換用スタイルシートの指定があれば、それをXMLに適用する。
  6. 変換の結果、 HTMLが出力される。
図4 XSQL Servletの構造

 XSQL Servletの簡単な利用例を紹介する(図5)。emp表に「emp_id」と「name」を問い合わせるSQL文を<xsql:query>タグ内に記述しておく。ユーザーが「emp.xsql」にアクセスすると、その問い合わせ結果が図のようなXML形式に置換されて出力される。

  このとき、<ROWSET>は問い合わせの結果全体、<ROW>は結果の各行、その内側のタグはデータベースに定義されている列名がそのまま使用される。<ROWSET>や<ROW>のタグは任意に変更できる。列名もデータベースで別名を定義すれば、その名前になる。さらに、スタイルシートを指定しておけばそれが適用され、HTMLとして出力される(画面2)。

図5 XSQL Servletの例


画面2 結果のHTMLファイルをWebブラウザで表示した

XSQL Servletの利点は、以下の点があげられる

  • XSLスタイルシートの使いまわしによる、デザインの統一とデザイン変更の容易さ
  • 1つのXSQLファイルに対して、複数のXSLスタイルシートの適用による見せるデータのコントロール
  • コンパイルが不必要
  • Servletであることによる移植性の高さ



   XML Schema Processor
 最新版: Ver.0.9.0.0 (2000/3/4)

 XML Schema Processorは、W3CのXML Schemaのワーキングドラフトに対応するXML Parserを補助するクラス群である。XML Parserと併用することにより、XML Schemaを使用した妥当性のチェックを行うことができる。例えば、ある要素<emp>の「id」という属性のデータ型が、Integerであるとスキーマファイルの中で定義されていれば、XMLの中で「<emp id="300km" />」とあった場合、「300km」はIntegerではないため、エラーが返る。

 現在、XML Schemaはワーキングドラフトであるので、このXMLSchema Processorもアルファ版であり、W3CによるXML Schemaの変更に伴い、XML Schema Processorも変更が行われる予定である。

 また、現在、XDKには含まれていないが、XSQL Page/Servletの内部などで使用しているものとして、次に紹介するXML SQL Utility for Javaというものがある。

   XML SQL Utility for Java
 最新版: Ver.1.1.1.0 (1999/8/23)

 XML SQL Utility for Javaは、データベースへの問い合わせ結果をXML文書として生成するJavaのクラス群である(図6)。また、XML文書のデータをデータベースのテーブルに書き込むこともできる。文字列としてXML文書を出力することも、メモリ上にDOMの木構造として出力することもできる。また、クエリーが参照しているテーブルをもとにDTDを生成することもできる。

図7 XML SQL Utilityの構造

XML SQL Utilityの簡単な使用例を見てみる。

SELECT empno, ename FROM emp WHERE empno < 1200

 上記のような、emp表に問い合わせるSQL文をXML SQL Utilityに渡すと、その結果が以下のようなXML文書となって返ってくる。

<?xml version="1.0"?>
  <ROWSET>
    <ROW ID="1">
      <EMPNO>1000</EMPNO>
      <ENAME>高橋裕</ENAME>
    </ROW>
    <ROW ID="2">
    <EMPNO>1111</EMPNO>
    <ENAME>倉田雅友</ENAME>
  </ROW>
</ROWSET>

 XML SQL UtilityのAPIを使用することで、XSQL Servletと同様に<ROWSET>や<ROW>といったタグを任意に変更したり、取り出す行数を制限したり、要素名の変更、スタイルシートの指定などが可能になる。

  以上でオラクルが提供しているXML関連製品の簡単な紹介してきた。次回からは、上記の各コンポーネントについて1つずつサンプルコードを用いて解説していきたいと思う。

(注:本文中で紹介している製品に関して、米国オラクルと日本オラクルでは違いがあります。日本オラクルでのサポートに関しては、日本オラクルのホームページを参照してください)

■関連リンク

■関連記事

Index
連載 XMLツールでプログラミング
(1)Javaで利用するXML開発ツール
Oracle XML Developer's Kit(XDK)の紹介
  (2)DOMによるXML文書の操作
DOM APIを使ったプログラムの基礎
  (3) SAXによるXML文書の操作
SAX APIを使ったXML文書操作の基礎と実践
  (4) Javaで文書作成クラスを生成する
DTDを元に、XML文書を作成するJavaクラスを作る
  (5) OracleからXML文書を出力する
データベースへの問い合わせ結果をXML文書にする



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

注目のテーマ

HTML5+UX 記事ランキング

本日月間