انتخاب و فیلتر در 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 می‌تواند تکرارها را ایجاد کند. می‌توان چندین عبارت 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
بازگردان <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)
بازگردان <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>