XQuery Seçme ve Filtreleme

XML örnek belgesi

Aşağıdaki örneklerde, bu "books.xml" belgesini (yukarıdaki bölümlerde kullanılan XML dosyası ile aynı) kullanmaya devam edeceğiz.

Tarayıcınızda "books.xml" dosyasını görüntüleyin

Elementleri seçme ve filtreleme

Önceki bölümlerde gördüğünüz gibi, elementleri seçmek ve filtrelemek için yol ifadeleri veya FLWOR ifadeleri kullanıyoruz.

Aşağıdaki FLWOR ifadesine bakın:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
for
(Opsiyonel) Her bir in ifadesi tarafından döndürülen her bir projeye bir değişken bağlar
let
(Opsiyonel)
where
(Opsiyonel) Bir şart belirler
order by
(Opsiyonel) Sonucun sıralama düzenini belirler
return
Sonuçta döndürülecek içeriği belirler

for ifadesi

for ifadesi, her bir projeye in ifadesi tarafından döndürülen her bir öğeye bir değişken bağlayabilir. for ifadesi döngü oluşturabilir. Aynı FLWOR ifadesinde birden fazla for ifadesi olabilir.

Bir for ifadesinde belirli sayıda döngüde dönmek istiyorsanız, aşağıdaki kullanabilirsinizkelime to

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

Sonuç:

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

Anahtar kelime at Döngü iterasyonlarını hesaplamak için kullanılır:

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

Sonuç:

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

for ifadesinde deBirden fazla in ifadesine izin verilirHer bir in ifadesini virgülle ayırın:

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

Sonuç:

<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 ifadesi

let ifadesi, değişken atamaları yapabilir ve aynı ifadelerin tekrarını önleyebilir. let ifadesi döngüye neden olmaz.

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

Sonuç:

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

where ifadesi

where ifadesi, sonuçlar için bir veya daha fazla koşul (kriter) belirler.

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

order by ifadesi

order by ifadesi, sonuçların sıralama düzenini belirler. Burada, sonuçları category ve title göre sıralamak istiyoruz:

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

Sonuç:

<title lang="en">Harry Potter</title>
<title lang="tr">Her gün İtalyan</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

return ifadesi:

return ifadesi, döndürülecek içeriği belirler.

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

Sonuç:

<title lang="tr">Her gün İtalyan</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>