Home » XML » XML XQuery : Selecting dan Filtering

XML XQuery : Selecting dan Filtering

by Hanifah Nurbaeti
by Hanifah Nurbaeti

Section Artikel

Dokumen Contoh XML

Kita akan menggunakan dokumen “books.xml” pada contoh di bawah ini

Lihat file “books.xml” di bawah ini.

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>

<book category="cooking">
  <title lang="en">Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

<book category="children">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>

<book category="web">
  <title lang="en">XQuery Kick Start</title>
  <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" cover="paperback">
  <title lang="en">Learning XML</title>
  <author>Erik T. Ray</author>
  <year>2003</year>
  <price>39.95</price>
</book>

</bookstore>

Output :

Memilih dan Memfilter Elemen

Kita memilih dan memfilter elemen dengan ekspresi Path atau dengan ekspresi FLWOR.

Lihatlah ekspresi FLWOR berikut:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • for – (opsional) mengikat variabel ke setiap item yang dikembalikan oleh ekspresi in
  • let – (opsional)
  • where – (opsional) menentukan kriteria
  • order by – (opsional) menentukan urutan sortir hasil
  • return – menentukan apa yang akan dikembalikan dalam hasil

Klausa For

Klausa for mengikat variabel ke setiap item yang dikembalikan oleh ekspresi in. Klausa for menghasilkan iterasi. Mungkin ada beberapa klausa dalam ekspresi FLWOR yang sama.

Untuk mengulang beberapa kali dalam klausa for, kita dapat menggunakan kata kunci to:

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

Output :

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

Kata kunci at dapat digunakan untuk menghitung iterasi:

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

Output :

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

Diperbolehkan menggunakan lebih dari satu ekspresi di klausa for. Gunakan koma untuk memisahkan setiap ekspresi:

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

Output :

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

Klausa Let

Klausa let memungkinkan tugas variabel dan menghindari pengulangan ekspresi yang sama berkali-kali. Klausa let tidak menghasilkan iterasi.

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

Output :

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

Klausa Where

Klausa where digunakan untuk menentukan satu atau lebih kriteria untuk hasil:

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

Klausa Order by

Klausa order by digunakan untuk menentukan urutan pengurutan hasil. Di sini kita akan mengurutkan hasil berdasarkan category dan title:

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

Output :

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

Klausa Return

Klausa return menentukan apa yang akan dikembalikan.

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

Output :

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

You may also like