TOPサーバ構築・運用> FLWOR式に挑戦
XMLDB入門
eXistではじめよう!使って覚えるXMLデータベース入門

第3回:eXistでXQueryを実行しよう!

著者:ウルシステムズ  柏原 宏充、大塚 庸史   2007/7/31
前のページ  1  2  3
FLWOR式に挑戦

   XQueryでは、XML文書を効率的に処理するためにFLWOR式に挑戦が用意されています。FLWOR式に挑戦とはfor、let、where、order by、returnの頭文字を集めたものであり、「フラワー」と読みます。このFLWOR式に挑戦を利用することで、XMLの特徴である階層構造や繰り返しを効率的に扱うことができます。また、出力についても柔軟に対応することができます。
XQueryでの処理の流れ
図5:XQueryでの処理の流れ
(画像をクリックすると別ウィンドウに拡大図を表示します)

   以下、FLWOR式に挑戦の構成要素である、for、let、where、order by、returnについて説明を行っていきます。


for:繰り返し処理をする

   for式では、XPath表現を使用し対象となるXMLシーケンスを作成します。for式以降では、指定した変数でXMLシーケンスへアクセスすることができます。XPath表現を使って、対象となるXMLの要素を特定したり、属性などを条件に要素を特定することもできます。for以降の式はループ1回ごとに実行されます。


let:変数に値を代入する

   let式では、変数に任意の値を代入することができます。代入できる値としては、数値や文字などのリテラルや、for式でアクセスできる要素、属性の内容などがあります。


where:絞り込み条件を設定する

   where式ではfor式、let式の結果に対して、任意の条件を設定することでデータを絞り込むことができます。


order by:出力の順序を設定する

   order by式では、return式での出力順序を設定することができます。ここはSQLと同じ役割です。


return:出力を設定する

   return式では、XQueryの結果として出力する内容を設定することができます。入力XMLの構造をそのまま残すこともできますし、入力XMLの内容を基にまったく新しいXML構造を作成し、結果として返すこともできます。


XQueryでCSVを出力してみる

   XQueryはXMLの生成に大きな威力を発揮しますが、出力できるのはXMLだけではありません。やりかた次第でCSVで出力させることも可能です。以下はCSVを出力するXqueryの例です。

xquery version "1.0";

for $product in document("/db/inventory/products.xml")/products/product
return
   string-join((xs:string($product/@id), $product/name/text(),
$product/price/text()),",")

XQueryでの検索

   では、以下の簡単なXQueryを実行してみましょう。Adminクライアントの「Tools」メニューにある「Find」機能を起動し、「Query Dialog」を開きます。その後、以下のXQueryを入力します。

xquery version "1.0";

<results>{
for $product in document("/db/inventory/products.xml")/products/product
let $p := $product/price
where $p > 100000
order by $p descending
return <product>{$product/@id}
    {$product/name, $p}
    </product>
}
</results>


   このXQueryは、product要素のprice($p変数)が100,000より大きい値を持つデータを抽出し、resultsツリーの下へpriceによる降順で表示するためのものです。

   上半分にXQueryを入れ、ダイアログの中央右にある「Submit」ボタンを押すとクエリが実行され、結果がダイアログ下半分に表示されます。

XQueryは難しくない
図6:XQueryは難しくない
(画像をクリックすると別ウィンドウに拡大図を表示します)


次回は

   駆け足になりましたが、XQueryの解説から実行までを紹介しました。

   次回は、eXistとAjaxを組み合わせて、簡単なWebアプリケーションを作成する方法を解説します。

前のページ  1  2  3


ウルシステムズ株式会社 柏原 宏充
著者プロフィール
ウルシステムズ株式会社  柏原 宏充
ウルシステムズ株式会社シニアコンサルタント。Web系開発の世界でRDBMSと触れあっていたところ、様々なことがあってXMLDBの世界へ。技術を文字にして伝え、文字を実装にして証明することを武器に、今日もお客様の課題解決に取り組んでいる。


ウルシステムズ株式会社 大塚 庸史
著者プロフィール
ウルシステムズ株式会社  大塚 庸史
ウルシステムズ株式会社シニアコンサルタント。2003年より現職。以前よりスクリプト言語には大きな興味を寄せていたが、最近、JavaScript、Flexの柔らかさに開眼しつつある。XQueryは今年「来る」と確信しつつ日々奔走中。


INDEX
第3回:eXistでXQueryを実行しよう!
  XQuery実行のための準備
  XQueryは難しくない
FLWOR式に挑戦