XQuery Seçme ve Filtreleme

XML Örnek Belgesi

Aşağıdaki örnekte 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üğümü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 öğeye bir değişken bağlar
let
(Opsiyonel)
where
(Opsiyonel) Bir şart belirler
order by
(Opsiyonel) Sonuçların sıralama düzenini belirler
return
Sonuçta döndürülecek içeriği belirler

for ifadesi

for ifadesi, değişkenleri in ifadesi tarafından döndürülen her bir öğeye bağlar. for ifadesi döngü oluşturur. Aynı FLWOR ifadesinde çok sayıda for ifadesi olabilir.

Bir for ifadesinde belirli sayıda döngü yapmayı belirlemek için kullanabilirsinizAnahtar kelime 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 Başlangıç</book>
<book>4. XML Öğrenme</book>

for ifadesinde de aynı şekildeÇok sayıda 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} ve y={$y}</test>

Sonuç:

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

let ifadesi

let ifadesi, değişken ataması yapabilir ve aynı ifadenin birden fazla kez tekrarlanmasını önleyebilir. let ifadesi döngü oluşturmayacaktır.

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) belirlemek için kullanılır.

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'ye 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="en">Everyday Italian</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="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>