SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Cyber Luxeonで学ぶXMLDB入門

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

Cyber Luxeonで学ぶXMLDB入門 第2回


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

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)の段階です。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
Cyber LuxeonでのXPath/XQuery実行

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Cyber Luxeonで学ぶXMLDB入門連載記事一覧

もっと読む

この記事の著者

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/922 2007/06/13 10:07

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング