انتخاب و فیلتر کردن در XQuery

مستند نمونه XML

ما در مثال‌های زیر از این مستند "books.xml" استفاده خواهیم کرد (همان XML فایل استفاده شده در فصل‌های قبل است).

در مرورگر خود فایل "books.xml" را مشاهده کنید.

انتخاب و فیلتر کردن عناصر

همانطور که در فصل‌های قبل مشاهده کرده‌اید، ما از عبارت‌های مسیر یا FLWOR برای انتخاب و فیلتر کردن عناصر استفاده می‌کنیم.

لطفاً به عبارت FLWOR زیر نگاه کنید:

برای $x در doc("books.xml")/bookstore/book
حيث $x/price>30
ترتیب بر اساس $x/titel
return $x/title
برای
(اختیاری) پیوند دادن یک متغیر به هر یک از مواردی که توسط عبارت in بازگشتی‌شده است
گذاری
(اختیاری)
حيث
(اختیاری) تنظیم یک شرط
ترتیب بر اساس
(اختیاری) تنظیم ترتیب نتایج
بازگرداندن
تعیین محتوایی که در نتیجه بازمی‌گردد

دستور for

دستور for می‌تواند متغیرها را به هر یک از مواردی که توسط درعبارت بازگشتی بازگشتی‌شده است، پیوند دهد. دستور for می‌تواند یک چرخه تکرار ایجاد کند. می‌توان چندین دستور for در یک عبارت FLWOR وجود داشت.

برای تکرار مشخص‌شده در یک دستور 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
return <book>{$i}. {data($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)
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 منجر به تکرار نمی‌شود.

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 مرتب کنیم:

برای $x در doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title

نتیجه:

<title lang="en">Harry Potter</title>
<title lang="fa">ای탈یایی روزانه</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

بخش return:

بخش return محتوایی که باید بازگردانده شود را تعیین می‌کند.

برای $x در doc("books.xml")/bookstore/book
return $x/title

نتیجه:

<title lang="fa">ای탈یایی روزانه</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>