اختيار وتنقية في XQuery

مثال ملف XML

نحن سنستمر في استخدام ملف "books.xml" في الأمثلة التالية (والملف XML الذي استخدمناه في الفصول السابقة).

انظر إلى ملف "books.xml" في متصفحك.

اختيار وتصفية العناصر

كما رأينا في الفصول السابقة، نستخدم تعبيرات المسار أو تعبيرات FLWOR لاختيار وتصفية العناصر.

انظر إلى تعبير FLWOR التالي:

for $x in doc("books.xml")/bookstore/book
حيث $x/price>30
ترتيب $x/title
return $x/title
لـ
(اختياري) ربط متغيرات بكل عنصر يعود منه تعبير in
تعليمة let
(اختياري)
حيث
(اختياري) تحديد شرط
ترتيب
(اختياري) تحديد ترتيب النتائج
عدد العائد
يحدد المعلومات التي يتم إرجاعها في النتيجة

تعليمة for

تعليمة for تربط المتغيرات بالعناصر التي تعود منها تعبيرات in. يمكن أن تنتج تعليمة for تكرارات. يمكن أن تحتوي كل تعبير FLWOR على تعليمات for متعددة.

لتحديد عدد التكرارات المحددة في تعليمة for، يمكنك استخدامكلمة مفتاحية إلى :

لـ $x في (1 إلى 5)
return <test>{$x}</test>

النتيجة:

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

كلمة مفتاحية at يمكن استخدامها لتحليل التكرارات:

لـ $x في $i في doc("books.xml")/bookstore/book/title
عدد العائد <book>{$i}. {data($x)}</book>

النتيجة:

<book>1. إيطالية يومية</book>
<book>2. هاري بوتر</book>
<book>3. بدء في XQuery</book>
<book>4. تعلم XML</book>

في تعليمة for بنفس الطريقةيُسمح بتعريفات متعددة لـ inيرجى استخدامomma لفصل كل تعبير in:

لـ $x في (10,20), $y في (100,200)
عدد العائد <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 يستخدم لتعريف ترتيب النتائج. هنا، سنقوم بترتيب النتائج بناءً على category و title:

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>