Latest web development tutorials

XQuery Выбор и фильтрация

экземпляра XML-документы

В следующем примере мы будем продолжать использовать этот "Books.xml" (тот же файл XML и выше раздел используется) документа.

См файл "books.xml" в вашем браузере .


Выбрать и фильтрующие элементы

Как видно в предыдущей главе, мы используем выражение FLWOR или выражение пути для выбора и фильтрующих элементов.

Рассмотрим следующее выражение FLWOR:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • для - (необязательно) для каждого из сгруппированных элементов, возвращенных выражением в переменной
  • Пусть - (опционально)
  • где - (необязательно) задать условие
  • упорядочить по - (необязательно) установить порядок в результатах
  • вернуться - положения в результатах возвращается содержание

для постановки

Заявление для переменной, привязанной к каждому элементу, возвращаемые в выражении. для итерационными. Там может быть несколько для того же оператора в выражении FLWOR.

Для определенного числа раз в течение цикла заявлении, вы можете использовать ключевые слова:

for $x in (1 to 5)
return <test>{$x}</test>

Результаты:

<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>

Ключевые слова могут быть использованы для вычисления итерации в:

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

Результаты:

<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

В заявлении также позволяет более чем в одном выражении. Пожалуйста, используйте запятую каждая в выражении:

for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

Результаты:

<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>

пусть заявление

Пусть утверждение может быть полной переменной распределения, а также избегать повторил то же выражение. Пусть утверждение не вызывает итерации.

let $x := (1 to 5)
return <test>{$x}</test>

Результаты:

<test>1 2 3 4 5</test>

где заявления

где оператор используется для установки результата одного или нескольких условий (критериев).

where $x/price>30 and $x/price<100

упорядочить по заявлению

упорядочить по заявлению сортировать результаты заранее определенном порядке. Здесь мы хотим, чтобы отсортировать результаты по категориям и названию:

for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title

Результаты:

<title lang="en">Harry Potter</title>
<title lang="en">Everyday Italian</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

вернуть заявление:

оператор возврата указывает вернуть содержимое.

for $x in doc("books.xml")/bookstore/book
return $x/title

Результаты:

<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>