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">
  Изучение XML
  <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-документе.

Следующее выражение пути используется для выбора всех элементов title в файле "books.xml":

doc("books.xml")/bookstore/book/title

(/bookstore выбирает элемент bookstore, /book выбирает все элементы book под элементом bookstore, а /title выбирает все элементы title под каждым элементом book)

Приведённый выше XQuery может извлечь следующие данные:

Everyday Italian
Harry Potter
XQuery Kick Start
Изучение XML

Предикаты

XQuery использует предикаты для ограничения данных, извлекаемых из XML-документа.

Следующий предикат используется для выбора всех элементов book под элементом bookstore, и значение элемента price под выбранным элементом book должно быть меньше 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>
Другие расширения