انتخاب و فیلتر کردن 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
لیٹ
(اختیاری)
که
(اختیاری) تعیین یک شرط
ترتیب بر اساس
(اختیاری) تنظیم ترتیب نتایج
بازگشت
تعیین محتوایی که در نتیجه بازمی‌گردد

عبارت for

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

برای تکرار مشخص次数 در یک عبارت for، می‌توانید ازکلمه کلیدی تا :

برای کش در (1 تا 5)
return <test>{$x}</test>

نتیجه:

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

کلمه کلیدی at قابل استفاده برای محاسبه تکرار:

برای کش در ی در doc("books.xml")/bookstore/book/title
بازگشت <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 نیزبسیار در عبارات مجاز استلطفاً از کاما برای جدا کردن هر در عبارت استفاده کنید:

برای کش در (10,20), ی در (100,200)
بازگشت <test>کس={کش} اور ی={ی}</test>

نتیجه:

<test>کس=10 اور ی=100</test>
<test>کس=10 اور ی=200</test>
<test>کس=20 اور ی=100</test>
<test>کس=20 اور ی=200</test>

لیٹ کلمات

فرمان 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>