با سلام خدمت کاربران گرامی سایت پی وی لرن و علاقمندان و کاربرانی که علاقمند به یادگیری دوره XML هستند. در جلسه گذشته آموختیم که چطور می توان در XQuery به اضافه کردن عناصر و Attributes پرداخت. در این جلسه اما به کاربران و علاقمندان این دوره آموزش انتخاب و فیلتر عناصر در XQuery را ارائه می نماییم.
ما از سند XML زیر در نمونه های زیر استفاده خواهیم کرد. (همان فایل XML همانند جلسات قبل).
همانطور که در جلسه های قبلی دیدید، ما عناصر را با انتخاب یک مسیر یا با عبارت FLWOR انتخاب و فیلتر می کنیم.
به عبارت FLOWOR زیر نگاه کنید:
1 2 3 4 | for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title |
for clause یک متغیر برای هر آیتم بازگشتی توسط عبارت درج می کند.
نتایج for clause در iteration قرار می گیرند.
این نتایج می توانند برای سایر clauses ها در همان FLWOR به صورت چندگانه باشند.
برای loop نمودن یک مقدار مشخص در یک for clause باید از کلمه کلیدی زیر استفاده نمود:
1 2 | for $x in (1 to 5) return <test>{$x}</test> |
نتیجه:
1 2 3 4 5 | <test>1</test> <test>2</test> <test>3</test> <test>4</test> <test>5</test> |
از کلمه کلیدی at می توان برای شمارش iteration بهره برد:
1 2 | for $x at $i in doc("books.xml")/bookstore/book/title return <book>{$i}. {data($x)}</book> |
نتیجه:
1 2 3 4 | <book>1. Everyday Italian</book> <book>2. Harry Potter</book> <book>3. XQuery Kick Start</book> <book>4. Learning XML</book> |
این مورد می تواند برای بیش از یک عبارت در for clause استفاده شود.
می توانید از کاما برای جداسازی در عبارت استفاده نمایید.
1 2 | for $x in (10,20), $y in (100,200) return <test>x={$x} and y={$y}</test> |
نتیجه:
1 2 3 4 | <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 clause اجازه تخصیص مقادیر را می دهد و از تکرار یک عبارت به صورت چندین و چندباره جلوگیری می کند.
let clause نتیجه ای در iteration ندارد.
1 2 | let $x := (1 to 5) return <test>{$x}</test> |
نتیجه:
1 | <test>1 2 3 4 5</test> |
از where clause برای این استفاده می شود که بتوان یک یا چند معیار را برای نتیجه تعیین نمود.
1 | where $x/price>30 and $x/price<100 |
order by clause از آن جهت مورد استفاده قرار می گیرد که به کمک آن می توان ترتیب مرتب سازی نتیجه را مشخص کرد.
در ادامه نتیجه را بر اساس category و title مرتب می کنیم.
1 2 3 | for $x in doc("books.xml")/bookstore/book order by $x/@category, $x/title return $x/title |
نتیجه:
1 2 3 4 | <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 clause تعیین می کند که چه چیزی باید بازگردانی شود.
1 2 | for $x in doc("books.xml")/bookstore/book return $x/title |
نتیجه:
1 2 3 4 | <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> |
در این جلسه آموزش انتخاب و فیلتر عناصر در XQuery ارائه گردید.
در جلسه بعدی به آموزش چند تابع مهم در XQuery خواهیم پرداخت.
با پی وی لرن همراه باشید.