2008年12月18日木曜日

XML その4

XML文書を検索する

XQueryは、XML文書を検索しデータを抽出するためのXML問い合せ言語である。2007年にW3C(World Wide Web Consortium)が勧告している。 XQuery1.0はXPath2.0を機能拡張しており、XPath2.0で記述されたXPath式はXQuery1.0として実行することができる。

※ 1つの入れ子になったグループをノードという

XPath式は単純に、XML文書内の特定の要素や属性などのノードの位置までを、「/」記号で区切りながら記述する。示されたXPath式に該当するノードが複数の場合は、複数の該当ノードが選択される。

XPathによる主なノードの指定方法

ノードの種類 ノードの指定方法
文書ノード 先頭の「/」
要素ノード 要素名
属性ノード @属性名

※ 文書ノードとはXML文書全体を表すノードで、「ルート要素」とは異なる。 「ルート要素」は文書ノードの子ノードになる。

簡単なクエリであれば、XPath式だけで表現するが可能。

【test.xml】
<製品情報>
<製品 製品コード="S0001" 製造工場="大分工場">
<製品名>フェルトペンW</製品名>
<価格>50</価格>
<発売日>2009-03-01</発売日>
</製品>
<製品 製品コード="S0002" 製造工場="神奈川工場">
<製品名>赤鉛筆</製品名>
<価格>10</価格>
<発売日>2008-08-25</発売日>
</製品> </製品情報>

【XPath式】
fn:doc("test.xml")/製品情報/製品

※ fn:doc関数は特定のXML文書の文書ノードを取得するために提供されている、XQuery/XPathの標準関数。

【実行結果】
<製品 製品コード="S0001" 製造工場="大分工場">
<製品名>フェルトペンW</製品名>
<価格>50</価格>
<発売日>2009-03-01</発売日>
</製品>
<製品 製品コード="S0002" 製造工場="神奈川工場">
<製品名>赤鉛筆</製品名>
<価格>10</価格>
<発売日>2008-08-25</発売日>
</製品>

XPath式が選択するノードをさらに絞り込むための記述を「述部」という。「述部」は絞り込みを行うノードの後に「[絞り込の条件]」のように記述する。
XPathでは
比較演算子 =, !=
論理演算子 and, or
などの演算子を使用することが可能。

「製品コード」属性の値が"S0001"である「製品」要素を取得するためのXPath式

【XPath式】
fn:doc("test.xml")/製品情報/製品[@製品コード='S0001']

【実行結果】
<製品 製品コード="S0001" 製造工場="大分工場">
<製品名>フェルトペンW</製品名>
<価格>50</価格>
<発売日>2009-03-01</発売日>
</製品>

0 件のコメント:

コメントを投稿