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 - (اختياري) يربط متغيرًا بكل عنصر يتم إرجاعه بواسطة التعبير
- اسمحوا - (اختياري)
- حيث - (اختياري) تحدد معايير
- ترتيب حسب - (اختياري) يحدد ترتيب فرز النتيجة
- إرجاع - يحدد ما سيتم إرجاعه في النتيجة
للشرط
تربط جملة for متغيرًا بكل عنصر يتم إرجاعه بواسطة التعبير in. ينتج عن جملة for التكرار. يمكن أن يكون هناك عدة جمل في نفس تعبير FLWOR.
لتكرار عدد معين من المرات في عبارة for ، يمكنك استخدام الكلمة الأساسية to :
for $x in (1 to 5)
return <test>{$x}</test>
نتيجة:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
يمكن استخدام الكلمة الأساسية في لحساب التكرار:
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
نتيجة:
<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>
كما يُسمح باستخدام أكثر من واحد في التعبير في عبارة for. استخدم الفاصلة للفصل بين كل منها في التعبير:
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
نتيجة:
<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>
فقرة السماح
تسمح جملة let بالتخصيصات المتغيرة وتتجنب تكرار نفس التعبير عدة مرات. لا ينتج عن بند let التكرار.
let $x := (1 to 5)
return <test>{$x}</test>
نتيجة:
<test>1 2 3 4 5</test>
شرط أين
يتم استخدام جملة where لتحديد معيار واحد أو أكثر للنتيجة:
where $x/price>30 and $x/price<100
الترتيب حسب الشرط
يتم استخدام الترتيب حسب الجملة لتحديد ترتيب فرز النتيجة. هنا نريد ترتيب النتيجة حسب الفئة والعنوان:
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>
شرط العودة
يحدد بند الإرجاع ما سيتم إرجاعه.
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>