|
||||||||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||||||||
| 作ってみよう! | ||||||||||||||||||
|
サンプルアプリケーションのアーキテクチャ概要は図1の通りです。大きな特徴として、これまでアプリケーションレイヤで行っていたほとんどの処理を、XQueryで記述していることがあげられます。 ![]() 図1:サンプルアプリケーションの概要 XQueryの中で出力用のHTMLドキュメントを作成することもできますが、今回はXQueryからの出力はシンプルなXMLのみとして、XMLの表示はすべてWebブラウザ側でAjaxを使って行うこととします。 このため、今回実際にコーディングする部分は、XQueryとAjaxの画面の一部となります。 次の表3は、作成するサンプルアプリケーションの構成と各ファイルの役割です。
表3:サンプルアプリケーションの構成 サンプルアプリケーションの構成ファイルは以下のURLからダウンロードできるので、各自アーカイバで解凍し、eXistがインストールされているディレクトリの/webapp/xquery配下に展開してください。標準では「/usr/local/eXist/webapp/xquery/」となります。またWindowsの場合は「c:\Program Files\eXist\webapp\xquery」になります。 |
||||||||||||||||||
|
今回のサンプルでは「Ext JS」というAjaxライブラリを利用します。Ext JSはJack Slocumが中心となって開発が進められているものです。高い機能と美しい画面が特徴的です。今回は安定版の1.0.1aを利用しています。 Ext JSのオフィシャルサイト http://extjs.com/ |
||||||||||||||||||
|
|
||||||||||||||||||
| show_list.xqlの作成 | ||||||||||||||||||
|
まず、製品一覧XMLをXMLDBから取得するためのXQueryを作成します。ここでは「第3回:eXistでXQueryを実行しよう!」で作成したXQueryを修正して使います。 主な変更点はWhere条件を削除して全製品を表示するようにしたことと、HTTPレスポンス用のライブラリを利用していることの2点です。
xquery version "1.0";
1では、eXistのXQuery拡張ライブラリを使っています。これはHTTPレスポンスを利用することができるライブラリで、namespaceを宣言して名前の衝突を避けることができます。 2では、response:set-header関数を使用しています。この関数は、名前の通りHTTPレスポンスのヘッダを設定することができます。ここでは、Content-Typeに「text/xml」を設定します。 Ajaxライブラリ側でContent-Typeでデータ形式を判断しているため、この設定が必要となります。 |
||||||||||||||||||
| parts_tree.xqlの作成 | ||||||||||||||||||
|
parts_tree.xqlは製品を構成している部品の階層構造を表示するためのXQueryです。製品一覧から製品IDを取得し、製品を構成する部品データをXMLDBから取得します。 |
||||||||||||||||||
| 製品構成部品XMLの検討 | ||||||||||||||||||
|
それでは製品構成部品を表示する場合のXML構造について考えてみましょう。部品IDと部品名を持たせたツリー構造の表示を前提とすると、以下のようなXMLになります。
<product id="0001" name="製品1">
これに対してXMLDBに保存されている部品XMLは、以下のようなデータ構造になっています。
<parts_list>
parts_list要素では、自分を構成しているpartsの情報をconsist_of要素の下に、部品IDとして持っています。部品を構成しているものについての情報を取得するためには、部品IDをキーとして階層構造を再帰的にたどっていく必要があります。 |
||||||||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||||||||
|
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||
|
|
||||||||||||||||||
|
||||||||||||||||||


