مشاهده فایل books.xml بکار رفته در مثالهای این صفحه
 
 المنت = تگ
 همانطور که در فصل های قبلی مشاهده کردید ، ماتوانستیم با مشخص کردن مسیر (path) یا با استفاده از یک حلقه FLWOR  المنت های مورد نظر را انتخاب و فیلتر کنیم
 
 به مثال FLWOR  زیر توجه کنید :

 

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title

 
 for : استفاده از این گزینه اختیاری است . این گزینه مشخص می کند مسیری را که node های ان را می خواهید در کدام متغیر قرار گیرند
 let : استفاده از این گزینه اختیاری است .
 where :  استفاده از این گزینه اختیاری است . شرط انتخاب node های مورد نظر را جلوی این دستور می نویسیم 
 order by :  استفاده از این گزینه اختیاری است . روش مرتب کردن نتیجه جست و جو را مشخص می کند 
 return: نتیجه حاصل از جست و جو را بر می گرداند 
 
روش اول استفاده از for

 

For  نام متغیر   in  دامنه داده ها

…..

 
  دراین نوع for ، هر بار که حلقه for می چرخد و دوباره به ابتدای ان باز می گردد ، مقدار بعدی که جلوی in مشخص شده است در متغیر قرار می گیرد
 
  مثال 1:
  اگر بخواهید عبارت for مقادیر مشخصی را بشمارد باید جلوی in و درون پرانتز ،  بازه مقادیر مورد نظر را مشخص کنید
 

 

for $x in (1 to 5)
return <test>{$x}</test>

 
  دراینجا مقدار متغیر x در هر بار چرخش for از یک تا پنج خواهد شد

 

خروجی :

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

 
  مثال 2 :
  از دستور FOR می توان برای دسترسی به داده هایی که در مسیر مورد نطر ما قرار دارند نیز استفاده کرد
 

 

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title

 
  مقدار بعد از IN در اصل برابر مجموعه ای ار NODE های پیدا شده منطبق بر مسیر ذکر شده است . که هر بار با چرخش FOR مقدار بعد ی از این مجموعه در X قرار می گیرد
 
روش دوم استفاده از for
حلقه for می شمارد که الان چندمین داده است که در متغیر حلقه قرار می گیرد

 

FOR  نام متغیر1   AT  نام متغیر 2  IN بازه مقادیر

....

 
 مثال

 

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

 
  دستور بعد از IN دامنه مقادیر را برای متغیر I مشخص می کند . پس هر بار که حلقه می چرخد مقدار بعدی از این دامنه در متغیر I قرار می گیرد و انچه که در X قرار می گیرد شماره ای است که می گوید این چندمین مقدار است که در I قرار می گیرد
 

 

 

<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

 
روش سوم استفاده از for
  هر بعد در FOR  ، متغیر حلقه  و IN و مجموعه مقادیر خودش را دارد
 

 

FOR  نام متغیر1  IN  بازه مقادیر  , نام متغیر2  IN  بازه مقادیر

....

 
  در موقع اجرا به ازای هر مقداری که در متغیر یک قرار می گیرد مقادیر اول تا اخر متغیر دوم در ان قرار خواهد گرفت . مثل FOR های تو در تو در زبانهای دیگر
 مثال

 

for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

 
  ابتدا مقدار I برابر 10 می شود .  دوبار حلقه FOR برای J برابر 100 و 200 اجرا می شود
 
 

بعد که بعد دوم تمام شد دوباره به بعد اول بر می گردیم و مقدار I برابر 20 می شود

و دوباره وارد بعد دوم شده و بازای J برابر 100 و 200 دوبار حلقه FOR می چرخد

و بعد تمام .

 
 خروجی :

 

<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 مانند دستور FOR نیست که دستوراتی را تکرار کند 
 
 مثال

 

let $x := (1 to 5)
return <test>{$x}</test>

 خروجی:
  <test>1 2 3 4 5</test>