XQuery ရွေးချယ်ခြင်း နှင့် စစ်ထုတ် ခြင်း။
XML နမူနာစာရွက်စာတမ်း
အောက်ဖော်ပြပါနမူနာများတွင် "books.xml" စာရွက်စာတမ်းကို အသုံးပြုပါမည် (ယခင်အခန်းများကဲ့သို့ XML ဖိုင်)။
သင့်ဘရောက်ဆာရှိ "books.xml" ဖိုင်ကို ကြည့်ရှုပါ ။
ဒြပ်စင်များကို ရွေးချယ်ခြင်းနှင့် စစ်ထုတ်ခြင်း။
ယခင်အခန်းများတွင် ကျွန်ုပ်တို့တွေ့မြင်ရသည့်အတိုင်း ကျွန်ုပ်တို့သည် Path expression သို့မဟုတ် FLWOR ဖော်ပြချက်ဖြင့် အစိတ်အပိုင်းများကို ရွေးချယ်ပြီး စစ်ထုတ်နေပါသည်။
အောက်ပါ FLWOR အသုံးအနှုန်းကိုကြည့်ပါ-
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- for - (ချန်လှပ်ထားနိုင်သည်) သည် စကားရပ်တွင် ပြန်ပေးသော အရာတစ်ခုစီအတွက် ကိန်းရှင်တစ်ခုကို ချည်နှောင်ထားသည်။
- let - (ချန်လှပ်ထားနိုင်သည်)
- where - (ချန်လှပ်ထားနိုင်သည်) သတ်မှတ်ချက်တစ်ခု သတ်မှတ်သည်။
- အမှာစာ by - (ချန်လှပ်ထားနိုင်သည်) သည် ရလဒ်၏ အမျိုးအစား-အစီအစဥ်ကို သတ်မှတ်သည်။
- return - ရလဒ်တွင် မည်သည့်အရာကို ပြန်ပေးရမည်ကို သတ်မှတ်သည်။
The for Clause
for clause သည် in expression မှပြန်ပေးသော အရာတစ်ခုစီအတွက် variable တစ်ခုကို binding သည်။ for clause သည် ထပ်ခါတလဲလဲ ဖြစ်စေသည်။ တူညီသော FLWOR စကားရပ်တွင် အပိုဒ်များအတွက် အများအပြားရှိနိုင်သည်။
အပိုဒ်တစ်ခုအတွက် တိကျသောအကြိမ်အရေအတွက်ကို လှည့်ပတ်ရန်၊ သင်သည် သော့ချက်စာလုံး ကို အသုံးပြုနိုင်သည်။
for $x in (1 to 5)
return <test>{$x}</test>
ရလဒ်:
<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>
ထပ် ကာထပ်ကာ ရေတွက်ရန် အဓိကစကားလုံးကို သုံးနိုင်သည် ။
for $x at $i in doc("books.xml")/bookstore/book/title
return <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 clause တွင် စကားရပ်တစ်ခုထက်ပို၍လည်း ခွင့်ပြုထားသည်။ စကားရပ်တစ်ခုစီကို ခွဲခြားရန် ကော်မာကိုသုံးပါ-
for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>
ရလဒ်:
<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 သည် variable assignments များကို ခွင့်ပြုပေးပြီး တူညီသော expression ကို အကြိမ်များစွာ ထပ်လုပ်ခြင်းကို ရှောင်ကြဉ်သည်။ let clause သည် ထပ်ခါထပ်ခါ မဖြစ်ပေါ်ပါ။
let $x := (1 to 5)
return <test>{$x}</test>
ရလဒ်:
<test>1 2 3 4 5</test>
အဲဒီ Clause က ဘယ်မှာလဲ။
ရလဒ်အတွက် တစ်ခု သို့မဟုတ် တစ်ခုထက်ပိုသော စံနှုန်းများကို သတ်မှတ်ရန် အပိုဒ်ကို အသုံးပြုသည့် နေရာ-
where $x/price>30 and $x/price<100
အော်ဒါသဘောပေါ့။
အပိုဒ်အလိုက် အစီအစဥ်ကို ရလဒ်၏ အမျိုးအစားအစီအစဥ်ကို သတ်မှတ်ရန် အသုံးပြုသည်။ ဤနေရာတွင် ကျွန်ုပ်တို့သည် ရလဒ်ကို အမျိုးအစားနှင့် ခေါင်းစဉ်အလိုက် အမိန့်ပေးလိုသည်-
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 clause သည် ပြန်ရမည့်အရာကို သတ်မှတ်သည်။
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>