XQuery サンプル
このセクションでは、例を通して XQuery の基本的な構文を学びましょう。
XML サンプル文書
以下の例では、この XML 文書を使用します。
"books.xml":
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book category="COOKING">
Everyday Italian
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
Harry Potter
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
XQuery Kick Start
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
Learning XML
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
<bookstore>
<book category="COOKING">
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="WEB">
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
。
"books.xml" からノードを選択するには?
関数
XQuery は関数を使用して XML 文書からデータを抽出します。
doc() は "books.xml" ファイルを開くために使用します:
doc("books.xml")
パス式
XQuery は、パス式を使用して XML 文書内の要素をナビゲートします。
以下のパス式は、"books.xml" ファイル内のすべての title 要素を選択するために使用します:
doc("books.xml")/bookstore/book/title
(/bookstore は bookstore 要素を選択し、/book は bookstore 要素配下のすべての book 要素を選択し、/title は各 book 要素配下のすべての title 要素を選択します)
上記の XQuery は以下のデータを抽出できます:
述語
XQuery は述語を使用して、XML 文書から抽出するデータを制限します。
以下の述語は、bookstore 要素配下のすべての book 要素を選択するために使用され、選択された book 要素配下の price 要素の値は 30 未満でなければなりません:
doc("books.xml")/bookstore/book[price<30]
上記の XQuery は以下のデータを抽出できます:
<book category="CHILDREN">
Harry Potter
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>