انتخاب (XQuery Select)
اینجا «انتخاب (Select)» و «فیلترکردن (Filter)» در XQuery را ساده می کنیم. «عبارت مسیر (Path Expression)» یعنی آدرس دهی مثل پوشه ها. «FLWOR» هم یک دستور پنج تایی برای پیمایش، فیلتر، مرتب سازی و بازگشت است.
انتخاب و فیلتر با FLWOR
این نمونه، کتاب های گران تر از 30 را برمی گرداند و بر اساس عنوان مرتب می کند.
for $x in doc("books.xml")/bookstore/book
where $x/price > 30
order by $x/title
return $x/title
نکته: Path Expression کوتاه است؛ اما FLWOR انعطاف بیشتری می دهد.
عبارت for؛ پیمایش توالی ها
for روی یک توالی می چرخد. می توانی تعداد مشخص بچرخی.
for $x in (1 to 5)
return <test>{$x}</test>
با at شمارنده حلقه را می گیریم و در خروجی می نویسیم.
for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>
می توانی چند منبعِ in داشته باشی؛ ضرب دکارتی تولید می شود.
for $x in (10, 20), $y in (100, 200)
return <test>x={$x} and y={$y}</test>
عبارت let؛ ذخیره و استفاده دوباره
let مقدار را یک بار محاسبه می کند. سپس همان را استفاده می کنی. تکرار محاسبه کم می شود.
let $x := (1 to 5)
return <test>{$x}</test>
عبارت where؛ اعمال شرط ها
where شرط می گذارد. مثل فیلتر در فروشگاه؛ بازه قیمت می دهی.
where $x/price > 30 and $x/price < 100
order by؛ مرتب سازی چندمعیاره
می توانی اول بر اساس ویژگی، بعد عنوان مرتب کنی.
for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title
return؛ تعیین خروجی نهایی
return دقیقا مشخص می کند چه برگردد؛ عنصر، متن، یا ساختۀ جدید.
for $x in doc("books.xml")/bookstore/book
return $x/title
گام های سریع تمرین
- با for روی کتاب ها بچرخ.
- با where بازه قیمت بده.
- با order by دو سطحی مرتب کن.
- با return عنوان ها را برگردان.
نکته: برای متن خام از data() استفاده کن. تگ حذف می شود.
مطالب مرتبط: FLWOR (XQuery FLWOR) · افزودن (XQuery Add) · توابع (XQuery Functions).
جمع بندی سریع
- FLWOR انعطاف زیاد می دهد.
- for می چرخد؛ let ذخیره می کند.
- where فیلتر می کند.
- order by مرتب می کند.
- return خروجی را می سازد.