انتخاب وتنقية XQuery

مثال مستند XML

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

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

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

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

انظر إلى جملة FLWOR التالية:

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

جملة for

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

إذا كنت ترغب في تكرار جملة for مرة معينة، يمكنك استخدامالكلمات المفتاحية إلى

لـ x في (1 لـ 5)
عودة <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}. {بيانات($x)}</book>

نتيجة:

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

في بند for أيضًايسمح ببندات متعددة inرجاءً استخدم الفاصلة للفصل بين كل تعبير 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>

بند التسمية:

بند التسمية يمكنه إكمال تخصيص المتغيرات، وتجنب تكرار نفس التعبير عدة مرات. لن يؤدي بند التسمية إلى تكرار.

تسمية المتغير $x := (1 إلى 5)
عودة <test>{$x}</test>

نتيجة:

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

بند حيث:

بند حيث يستخدم لتعريف عدد من الشروط (المستندات).

حيث $x/price>30 و$x/price<100

بند الترتيب:

بند الترتيب يستخدم لتعريف ترتيب النتائج. هنا، سنقوم بترتيب النتائج بناءً على category و title:

للمحتويات $x في doc("books.xml")/bookstore/book
ترتيب حسب $x/@category, $x/title
عودة $x/title

نتيجة:

<title lang="en">Harry Potter</title>
<title lang="ar">كل يوم إيطالي</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

بند العودة:

بند العودة يحدد المحتوى الذي سيتم عهده.

للمحتويات $x في doc("books.xml")/bookstore/book
عودة $x/title

نتيجة:

<title lang="ar">كل يوم إيطالي</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>