Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

XMLデータの操作(前編) ~ XPath、XQuery

Cyber Luxeonで学ぶXMLDB入門 第2回

  • LINEで送る
  • このエントリーをはてなブックマークに追加

XMLDB製品のCyber Luxeon上で、XMLデータベースの検索言語の標準であるXPathとXQueryを実行する方法を説明します。XQueryとそれに関連する仕様の構成、そしてXQuery,XPathの基本文法について説明します。

目次

はじめに

 広く知られているように、リレーショナル・データベース(以降、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.0XSLT 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、XPath 2.0、XSLT 2.0の仕様群
XQuery、XPath 2.0、XSLT 2.0の仕様群

 以下の表に上図に示した仕様群をまとめました。

XQueryと関連する仕様
仕様名状態説明
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において基本機能ではありませんが、上記以外にも仕様の策定が進められているものを以下の表にまとめました。

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関連で、使用例、説明文書などが用意されています。それらを以下の表にまとめました。

XQueryに関するその他の説明文書・資料など
文書名説明
XML Query Use Cases数多くの実世界のシナリオと特定の問題解決のXQuery抜粋例を記述している。
XML Query Test SuiteXQueryのテスト用プログラムを用意している。
XQuery 1.0 and XPath 2.0 Functions and Operators Error Codes Namespace関数と演算子のエラーコードと名前空間の一覧がまとめられている。
XQuery 1.0 Grammar Test PageXQuery1.0の文法的テストを実施できる。
XQuery implementationsXQueryを実装しているソフトウェアを紹介している。
XQueryのCRUD機能
 XQueryは、Queryという名前が付いていることから分かるように、データベースに対して特定の情報を検索(問合せ)する機能を提供します。RDBのSQLと違う点は、一般にCRUD(クラッド)と呼ばれる基本的なデータ操作、すなわち、データの作成(Create)、読み出し(Read)、更新(Update)、削除(Delete)のうち、読み出し(Read)のみ定義されている点です。XQueryによるXMLノードの挿入、削除、変更、コピーといった機能は、XQueryの拡張仕様「XQuery Update Facility」として別途仕様策定がXML Query Working Groupで進められています。XQuery Update Facilityは、本稿執筆時点では草案(Working Draft)の段階です。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2007/02/17 11:15 2007年1月23日のXQuery1.0の勧告にあわせて、内容を変更。

著者プロフィール

  • WINGSプロジェクト 佐藤 治夫 (株式会社ビープラウド)(サトウ ハルオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

バックナンバー

連載:Cyber Luxeonで学ぶXMLDB入門
All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5