Επιλογή και Φιλτράρισμα στο 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
for
(προαιρετικό) Συνδέει μια μεταβλητή με κάθε στοιχείο που επιστρέφει η έκφραση in
let
(προαιρετικό)
where
(προαιρετικό) Ορίζει μια συνθήκη
order by
(προαιρετικό) Ορίζει τη σειρά διάταξης των αποτελεσμάτων
return
Ορίζει το περιεχόμενο που θα επιστρέψει το αποτέλεσμα

for statement

Το for statement συνδέει μεταβλητές με κάθε στοιχείο που επιστρέφει η έκφραση in. Το for statement μπορεί να δημιουργήσει επαναλήψεις. Μπορούν να υπάρχουν πολλαπλά for statements στον ίδιο FLWOR expression.

Για να επαναλάβετε μια συγκεκριμένη αριθμητική φορά σε ένα for statement, μπορείτε να χρησιμοποιήσετε:Κλειδί μέχρι :

for $x in (1 μέχρι 5)
return <test>{$x}</test>

Αποτελέσματα:

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

Κλειδί at Χρησιμοποιείται για τον υπολογισμό των επαναλήψεων:

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

Αποτελέσματα:

<book>1. Η καθημερινή Ιταλική</book>
<book>2. Harry Potter</book>
<book>3. Εισαγωγή στο XQuery</book>
<book>4. Μάθηση XML</book>

Στο for statement επίσηςΕπιτρέπεται πολλαπλές εκφράσεις inΠαρακαλώ χρησιμοποιήστε κόμματα για να διαιρέσετε κάθε έκφραση in:

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

Αποτελέσματα:

<test>x=10 και y=100</test>
<test>x=10 και y=200</test>
<test>x=20 και y=100</test>
<test>x=20 και y=200</test>

let

Η πρόταση let μπορεί να ολοκληρώσει την κατανομή μεταβλητών και να αποφύγει την επανάληψη της ίδιας έκφρασης. Η πρόταση let δεν προκαλεί επαναληπτική δραστηριότητα.

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

Αποτελέσματα:

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

Η πρόταση where

Η πρόταση where καθορίζει μια ή περισσότερες συνθήκες για τα αποτελέσματα.

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

Η πρόταση order by

Η πρόταση order by καθορίζει τη σειρά κατάταξης των αποτελεσμάτων. Εδώ, θα τα ταξινομήσουμε με βάση την κατηγορία και το όνομα του τίτλου:

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>

Η πρόταση return:

Η πρόταση return καθορίζει το περιεχόμενο που πρέπει να επιστρέψει.

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>