CodeZine(コードジン)

特集ページ一覧

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

Cyber Luxeonで学ぶXMLDB入門 第2回

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

目次

Cyber LuxeonでのXPath/XQuery実行

 XPath/XQueryの具体的な文法について説明する前に、まずは実際にCyber Luxeon上でXPath/XQueryを実行する方法を説明します。

 Cyber Luxeonの管理者用ツールであるDXE Managerを起動します。起動方法は「XMLDBとCyber Luxeonの基本」の「DXE Managerの基本的な使用方法」の「DXE Managerの起動、DXEサーバーへの接続」を参照してください。

 DXE Managerのツリーペイン(ウィンドウ左側のペイン)上で、検索対象のXMLを右クリックして、[クエリー]-[クエリーの手動作成]を選択します。

XQuery実行方法
XQuery実行方法

 [クエリ]ダイアログが開くので[クエリータイプ]のラジオボタンで[XPath]または[XQuery]を選択し、[クエリー文字列の入力]エリアに式を入力します。入力が終わったら[OK]ボタンを押下します。

クエリーダイアログ
クエリーダイアログ

 正しく実行されると、次のように実行結果が表示されます(画像はXQueryで検索し、検索結果を「IEで表示」モードで表示したところ)。

XQuery実行結果
XQuery実行結果

XPath(1/2)

 前述の「XQueryの仕様構成と関連する仕様」で述べたように、XQuery1.0ではXPathの新仕様であるXPath 2.0が使用されます。XPathは、XMLデータをあらわす木構造をたどって文書内のノードにアクセスするという特徴があります。

サンプルの実行

 まずは、XPathの簡単なサンプルをCyber Luxeon上で実行してみます。以下の図がCyber Luxeon上に保存した検索対象のサンプルXMLになります。

サンプルXML
サンプルXML

 このXMLからplayer要素の中で、その子要素のname要素が「イチロー」のものを抽出するXPathを実行します。

 入力するXPathは次のようになります。

XPath例
/child::players/child::player[child::name='イチロー']

 上記の「Cyber LuxeonでのXPath/XQuery実行」で説明した方法で[クエリー]ダイアログを開き、クエリー文字列の入力欄にXPath式を入力し、[クエリータイプ]のラジオボタンで[XPath]を選択します。

サンプルXPathの実行
サンプルXPathの実行

 [OK]ボタンを押下すると、以下の実行結果が表示されます(「IEで表示」モード)。

サンプルXPathの実行結果
サンプルXPathの実行結果

 xlnxql:result要素内に、XPathの実行結果が格納されています。実行結果で表示されている「xlnxql」はCyber Luxeon独自の名前空間(http://www.exeloncorp.com/DXE/namespaces/query)です。xlnxql:result要素のxlnsql:query属性には、XPath式、xlnxql:count属性には抽出件数が設定されています。

シーケンス

 XPath 2.0における機能追加の最も大きなものとしてシーケンスという概念の導入があります。XPath 2.0では、XML中のすべての対象物をシーケンスとして扱います。シーケンスは、さまざまな異なるアイテムの集合を順番に並べたものです。

アイテムとアトミック値

 アイテムは、XML文書のノード、あるいはアトミック値のいずれかとなります。アトミック値とは、XML Schemaで定義されているビルトイン型のどれかの値をもつインスタンスのことで、型には、string型、integer型、decimal型などがあります。アトミック値はそれ以上分割できないことから「アトミック」という名前がつけられています。

セットとシーケンス

 XPath 1.0では集合をセットと呼んでいました。セットとシーケンスの異なる点は以下の2つです。

  1. 同じものが複数回登場してもかまわないこと(重複の許可)
  2. 配列の要素に順番の概念があること
XPath 2.0の新機能(XPath 1.0との違い)
 XPath 2.0では、シーケンス以外にも、いくつかの機能が追加されました。以下が主な追加機能の一覧です。
  1. 2次クエリー(2つのクエリの連鎖)
  2. 変数バインド、ループ機能
  3. XML Schemaデータ型の完全サポート
  4. 正規表現や日付/時間、ストリング操作など
  5. コメント

基本式

 基本式は、XPath内で使用される最も基本的な記述式を定義しています。基本式の構成要素を以下の表にまとめました。

基本式の構成要素
説明具体例
リテラルアトミック値の表現方法のこと。リテラルは、数値リテラルと文字リテラルから構成され、数値リテラルは、さらに整数リテラル、小数リテラル、倍精度リテラルから構成されます。「1.0」「東京」など
変数参照「$変数名」の形式で記述されます。$player
丸括弧書き式"("と")"で式を囲む方式です。数式の優先順位などを指定指定する場合などに使用されます。(2+4) * 5
コンテキストアイテム式「.」のことです。コンテキストアイテムは、現在処理されているノードのことで、ノードもしくは、アトミック値になります。 /./
関数呼び出しXQuery 1.0 and XPath 2.0 Functions and Operatorsで定義されているビルトイン関数の呼び出しです。関数名(引数,引数)の書式で記述されます。fn:abs(-22)

パス

 XPathの重要な概念として「パス」があります。パスとは、XML文書のツリー構造から特定のシーケンスを指定するための式のことをいいます。

 サンプルのXPath式のパスの構成要素を示したものが以下の図になります。

パスの記述
パスの記述

 上図で示したように、パスは「/ステップ/ステップ/・・・(繰り返し)」のように、「/」と「ステップ」から構成されます(ステップについては次節で詳説します)。

 また、これ以外にも「//」とステップの組み合わせによって記述する方法も用意されています。「//ステップ」と記述した場合は、コンテキストノード以下でマッチするノードすべてを表します。「//」を使用した例を以下に示します。

「//」を使用した例
//name

 「/players/player/name」という階層構造を持つXMLの場合、「//name」という記述で、name要素すべてにマッチします。

著注:名前の変更
 XPath 1.0では「パス」は「ロケーションパス(Location Path)」、「ステップ」は「ロケーションステップ(Location Steps)」と呼ばれていましたが、XPath 2.0になり、呼び名が変更されました。

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

修正履歴

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

バックナンバー

連載:Cyber Luxeonで学ぶXMLDB入門

著者プロフィール

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

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

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

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

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5