はじめに
広く知られているように、リレーショナル・データベース(以降、RDB)では、格納したデータの操作用言語としてSQL(Structured Query Language)が標準化されています。RDBを操作するエンジニアにとってSQLに関する知識は必要不可欠のものとなっています。
XMLデータベース(以降、XMLDB)では、このSQLに該当するものとしてXQuery(XQuery 1.0: An XML Query Language)がW3Cで標準化されており、2007年1月23日にXPath 2.0など関連する8つの仕様群を含め、勧告(Recommendation)となりました(W3Cのプレスリリース)。
XQueryは、さまざまなタイプのXMLデータソース(XMLファイル、ネイティヴXMLDB、RDBなど)が混在するマルチベンダかつマルチデータベース環境におけるデータ検索・抽出・データ結合の実現を目的として設計されたクエリ言語です。
本稿では、まず、XQueryとそれに関連する仕様の構成について説明します。その後、XMLDB製品であるCyber Luxeon上でXQueryとXPathを実行する方法と、XQueryやXPathの基本的文法、XQuery・XPathの共通関数について説明します。
XQueryの仕様構成と関連する仕様
XQueryの仕様は、それ自体単独の仕様では構成されておらず、いくつかの関連仕様から構成されています。具体的には、XPath 2.0、XSLT 2.0と関数や演算子、データモデル、セマンティックなどを共通化するかたちになっており、それぞれの整合性が保たれるよう、並行で仕様の策定が進められています。
XPathは、XML文書内のノードを特定したり(アドレッシング)、あるノード群から特定のノード群を抽出したり(フィルタリング)することを目的としています。XPath 2.0は、XPath 1.0とXQueryの両方をもとにつくられ、XSLT 2.0やXQueryなどのホスト言語内に埋め込まれることを想定して再設計されています。
XSLTは、XML文書を他のXML文書に変換することを目的とした言語です。XSLT 2.0は、XPath 2.0の使用を前提として、XSLT 1.0をもとに再設計されています。
以下の図に、上で説明したXQuery、XPath 2.0、XSLT 2.0の仕様群の関連について示しています。
以下の表に上図に示した仕様群をまとめました。
仕様名 | 状態 | 説明 |
XQuery 1.0: An XML Query Language | 勧告 | ユーザーの視点から機能と言語シンタックスを定義し、XQueryに関する以外のほぼすべての関連項目も概説する中心的文書である。 |
XSL Transformations (XSLT) Version 2.0 | 勧告 | XSLTの新仕様。 |
XML Path Language (XPath) 2.0 | 勧告 | XPathの新仕様。 |
XML Schema Part2 datatypes | 勧告 | XMLで使用されるデータ型の標準について定めている。 |
XQuery 1.0 and XPath 2.0 Formal Semantics | 勧告 | XQuery1.0とXPath 2.0で使用するデータモデルの表現に正確な意味を定義している文書。 |
XQuery 1.0 and XPath 2.0 Data Model (XDM) | 勧告 | クエリー処理系が認識しなければならないデータ項目、および正式なセマンティックスの基礎を記述している。 |
XQuery 1.0 and XPath 2.0 Functions and Operators | 勧告 | XMLスキーマ・データ型、XMLノード、および両方のシーケンスに対する200個以上の関数と演算子を記述している。 |
また、XQueryにおいて基本機能ではありませんが、上記以外にも仕様の策定が進められているものを以下の表にまとめました。
仕様名 | 状態 | 説明 |
XSLT 2.0 and XQuery 1.0 Serialization | 勧告 | XQuery 1.0とXPath 2.0のデータ・モデルから、シリアライズされた山括弧記法のXMLを出力する場合に関する検討の一考察。 |
Building a Tokenizer for XPath or XQuery | 草案 | 元来、メインXQuery 1.0文書に見出される文法的資料の一部を別に取り出し、さらに詳述した作業ノート草案。これは、言語実装者のみを対象とするものと考えられる。 |
XQuery 1.0 and XPath 2.0 Full-Text | 草案 | XQueryの全文検索に関する仕様。 |
XQuery Update Facility | 草案 | XQueryが必要とする機能で、XQueryが既存の文書に新規データを書き込み、既存の文章に対して更新を実行できるようにする機能を記述している。 |
また上記の仕様書以外にも、XQuery関連で、使用例、説明文書などが用意されています。それらを以下の表にまとめました。
文書名 | 説明 |
XML Query Use Cases | 数多くの実世界のシナリオと特定の問題解決のXQuery抜粋例を記述している。 |
XML Query Test Suite | XQueryのテスト用プログラムを用意している。 |
XQuery 1.0 and XPath 2.0 Functions and Operators Error Codes Namespace | 関数と演算子のエラーコードと名前空間の一覧がまとめられている。 |
XQuery 1.0 Grammar Test Page | XQuery1.0の文法的テストを実施できる。 |
XQuery implementations | XQueryを実装しているソフトウェアを紹介している。 |