W3C規格解説
XQuery
(株)日本ユニテック
村上 泰介
XQueryとは、XMLデータのための照会(問い合わせ)言語です。様々な分野でデータのXML化が進むと、膨大なXMLデータから必要な情報だけを取り出す技術が必要になります。問い合わせ言語であるXQueryの仕様書には何種類かありますが、XQueryの基本となる仕様はXQuery 1.0で、XQueryをXMLベースで記述したのがXQueryX(XML Syntax for XQuery 1.0)となります。
リレーショナルデータベース(RDB)に対して問い合わせを行うSQLと比較してみましょう。図の左側がデータベースに対してSQLで問い合わせを行い、図の右側がXMLデータに対してXQuery
で問い合わせをするサンプルです。
図 SQLとXQuery
SQLとXQueryが異なるのは、まず問い合わせの対象が、SQLが行と列のテーブルであるのに対して、XQueryは構造化されたXMLデータであるということです。ですから、SQL
はテーブルの列を指定すればよいのに対して、XQueryはXMLデータのどの要素の何番目の子要素という具合に細かく指定しなければなりません。そのためXMLデータの一部を指定するのにXPathを使います。
図のXQueryの式で説明します。
FOR $e IN //employee
WHERE $e/ID="0001"
RETURN $e |
"document("employee_tb1.xml ")//employee" は、XPathでemployee_tb1.xmlのすべてのemployee要素を表しています。それを変数の
"$e" にバインドしています。そして、'$e/ID="0001"'は、employee要素の中でID要素の内容が
"0001" であるもののことです。それをWHEREで選択して、そのemployee要素をRETURNで返します。ですから、結果が図のようになります。
SQLとXQueryが異なる2番目の点は、問い合わせの結果が、SQLはテーブルであり、形式が決まるのに対して、XQueryはXMLデータで、結果の表示を変えられるということです。
さきほどのRETURN式の部分を
RETURN
<従業員>
<名前>$e/name/text()</名前>
</従業員> |
とします。text()は、テキストノードつまりその内容のことです。そうすれば、
<従業員>
<名前>山田一郎</名前>
</従業員> |
という結果が返ってきます。
このように、XQueryは対象を指定するのにXPathを用い、構造を変換してXMLデータで結果を表現できるのが特徴です。もちろん、SQLと同様にXQueryでも様々な式、演算子、関数が用意されています。詳しくは仕様書をご覧ください。
XML Schemaが勧告となったので、W3CではXQueryが最も注目されている規格の一つです。XQueryは現在ワーキングドラフトの段階で、仕様が変わってゆくと思われますので、今後の動向に注目する必要があります。2001年夏期発刊予定の日本ユニテックによる「改訂版・標準XML完全解説(下)」でも取りあげますので、是非お読みください。
関連サービス
標準化仕様の動向調査
最新動向を伝えるDXメールニュース
(無料)
|