xqueryについて

いまさらながら勉強。

様々な分野でデータのXML化が進むと、膨大なXMLデータから必要な情報だけを取り出す技術が必要になります。XMLデータのための照会(問い合わせ)言語がXQueryです。XQueryの仕様書は何種類かあります。XQueryの基本となる仕様はXQuery 1.0で、XQueryXMLベースで記述したのがXQueryX(XML Syntax for XQuery 1.0)です。

XQueryとはXML問い合わせ言語のひとつでデータベースにとってのSQL見たいにXML文書に対してさまざまな問合せを行うことが出来るように開発された言語です。 現在はW3Cのワーキングドラフトの状態です。

 XQuery 1.0はXPath 2.0をサブセット(部分集合)として含んでいるのでXMLの各要素を指定するにはXpathを使用します。

 XQuerySQLのSelect節、From節、Where節などのようなものをFLWR表現式のfor、let、where、return句などで実現して複数のXML文書にたいして選択、射影、直積、結合などを実行することが出来ます。

んー、FLWRはフラワーと呼ぶのか、繰り返し等の処理が入るので単に検索するだけじゃなく加工の部分まで包含しているんだな。

 FOR $e IN //employee
 WHERE $e/ID="0001"
 RETURN $e

上記の例では、 //employee がxpath式となるわけで、ヒットしたxmlの部分に対する演算を行っている。
また、RETURN節を以下のように書き換えることによって完成品のxmlを得ることができる

 FOR $e IN //employee
 WHERE $e/ID="0001"
 RETURN
 <従業員>
     <名前>$e/name/text()</名前>
 </従業員>

ここで考えなければならないのは検索だけでなく加工も検索式中に包含できる言語になっている点だ。
んー、そうやって考えると加工というのは、抽出+加工になってるんだな。今頃気がついた(涙

現在の予想ではxpathは抽出のみに特化しているのではないかと考える。
その理由としては、xpathXSLTおよびXPOINTERのサブセットであるからである。

http://www-6.ibm.com/jp/developerworks/java/050331/j_j-jtp03225.html

ここから得られる情報からすると、xqueryxsltは機能的に重複していると考えられる。
そうするといったいどこで抽出されたxmlを加工すればベストなのかわからない。

ajax等のようなリッチクライアントに進むのならばスタイルシートの方向だろうし、
thinクライアントならばxqueryもしくはより強力なものが必要になるだろう。

スタイルシートのタイプではクライアント(ユーザ)が自由に切り替えることはあまりできないし。
(というか、ブラウザでスタイルシートをリアルタイムに変更するための研究はなされていないように思える)
サーバサイドでも自由にコントロールできるとは考えにくい。
以上のように考え始めてふと思ったのだが、xqueryのRETURN句はスタイルシートのように行動しているように思えてきた。
画面の見栄えまでプログラム内に包含することはスタイルシートの考え方に思いっきり相反してるんだな。この点でxqueryがはやらないことの一因なのかもしれない。
まあ、そう考えてどのくらいcss等のスタイルシートが利用されているのかという定量データは持ってないけどね。

ああ、そうか、xpathでデータを吸い上げてxsltで加工というのがやっぱいいんだろうな・・・流れとしては。(って、xsltがソート等に対応しているか調べてないな)
よし、ということでとりあえず終了。