XQuery चयन और फ़िल्टरिंग
एक्सएमएल उदाहरण दस्तावेज़
हम नीचे दिए गए उदाहरणों में "books.xml" दस्तावेज़ का उपयोग करेंगे (पिछले अध्यायों की तरह ही XML फ़ाइल)।
अपने ब्राउज़र में "books.xml" फ़ाइल देखें ।
तत्वों का चयन और फ़िल्टरिंग
जैसा कि हमने पिछले अध्यायों में देखा है, हम पथ अभिव्यक्ति या FLWOR अभिव्यक्ति के साथ तत्वों का चयन और फ़िल्टर कर रहे हैं।
निम्नलिखित FLWOR व्यंजक को देखें:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
- के लिए - (वैकल्पिक) अभिव्यक्ति द्वारा लौटाए गए प्रत्येक आइटम के लिए एक चर बांधता है
- चलो - (वैकल्पिक)
- जहां - (वैकल्पिक) एक मानदंड निर्दिष्ट करता है
- द्वारा क्रम - (वैकल्पिक) परिणाम के क्रम-क्रम को निर्दिष्ट करता है
- वापसी - निर्दिष्ट करता है कि परिणाम में क्या लौटना है
खंड के लिए
खंड के लिए अभिव्यक्ति द्वारा लौटाए गए प्रत्येक आइटम के लिए एक चर बांधता है। खंड के लिए पुनरावृत्ति का परिणाम है। एक ही FLWOR एक्सप्रेशन में क्लॉज़ के लिए कई हो सकते हैं।
क्लॉज के लिए एक विशिष्ट संख्या को लूप करने के लिए, आप to कीवर्ड का उपयोग कर सकते हैं:
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>
at कीवर्ड का उपयोग पुनरावृत्ति को गिनने के लिए किया जा सकता है:
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 $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 $x := (1 to 5)
return <test>{$x}</test>
परिणाम:
<test>1 2 3 4 5</test>
जहां क्लॉज
परिणाम के लिए एक या अधिक मानदंड निर्दिष्ट करने के लिए जहां क्लॉज का उपयोग किया जाता है:
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>
वापसी खंड
रिटर्न क्लॉज निर्दिष्ट करता है कि क्या लौटाया जाना है।
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>