एक्सक्यूएरी फ़ंक्शन

XQuery 1.0, XPath 2.0 और XSLT 2.0 एक समान फ़ंक्शन लाइब्रेरी साझा करते हैं。

एक्सक्यूएरी फ़ंक्शन

XQuery 100 से अधिक अंतर्निहित फ़ंक्शन है। ये फ़ंक्शन बाक्स, संख्या, तारीख और समय, नोड और QName ऑपरेशन, सीक्वेंस ऑपरेशन, लॉजिकल मूल्य आदि के लिए उपयोग किए जा सकते हैं। आप भी XQuery में अपने फ़ंक्शन परिभाषित कर सकते हैं。

XQuery अंतर्निहित फ़ंक्शन

XQuery फ़ंक्शन नामस्पेस का URI:

http://www.w3.org/2005/02/xpath-functions

फ़ंक्शन नामस्पेस का डिफ़ॉल्ट पूर्व-संदर्भ fn: है।

सूचना:फ़ंक्शन को अक्सर fn: पूर्व-संदर्भ के साथ बुलाया जाता है, उदाहरण fn:string()। लेकिन fn: नामस्पेस के डिफ़ॉल्ट पूर्व-संदर्भ के रूप में है, इसलिए फ़ंक्शन नाम को बुलाते समय पूर्व-संदर्भ नहीं इस्तेमाल किया जाता है。

आप हमारे XPath शिक्षण अध्याय में पूरे《एंडरबी एक्सक्वेरी फ़ंक्शन संदर्भ दस्तावेज़》。

फ़ंक्शन बुलावूती उदाहरण

फ़ंक्शन बुलावूती को अभिव्यक्ति के साथ उपयोग किया जा सकता है। नीचे का उदाहरण देखें:

उदाहरण 1: एलीमेंट में

<name>{upper-case($booktitle)}</name>

उदाहरण 2: पथ-व्यक्ति के अभिप्राय में

doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']

उदाहरण 3: let बयान में

let $name := (substring($booktitle,1,4))

XQuery उपयोगकर्ता-निर्मित फ़ंक्शन

अगर आवश्यक XQuery फ़ंक्शन नहीं मिलता, तो आप अपने फ़ंक्शन लिख सकते हैं。

उपयोगकर्ता-निर्मित फ़ंक्शन को अनुसंधान में या स्वतंत्र लाइब्रेरी में परिभाषित किया जा सकता है。

व्याकरण

declare function आगे का संदर्भ:फ़ंक्शन नाम($पारामीटर AS डाटा प्रकार)
  AS वापसी डाटा प्रकार
{}}
(: ...फ़ंक्शन कोड... :)
;

उपयोगकर्ता-निर्मित फ़ंक्शन के बारे में ध्यान दें:

  • declare function कीवर्ड का उपयोग करें
  • फ़ंक्शन नाम को पूर्व-संदर्भ (prefix) इस्तेमाल करें
  • पारामीटर का डाटा प्रकार आमतौर पर XML Schema में परिभाषित डाटा प्रकार के समान होता है
  • फ़ंक्शन मुख्यांक खिंचने के चारों ओर घेरे बंद करना होता है

एक अनुसंधान में घोषित उपयोगकर्ता-निर्मित फ़ंक्शन का उदाहरण:

declare function local:minPrice(
  $price as xs:decimal?,
  $discount as xs:decimal?)
  AS xs:decimal?
{}}
let $disc := ($price * $discount) div 100
return ($price - $disc)
;
(: ऊपर दिए गए फ़ंक्शन को बुलाने के लिए नीचे दिए गए उदाहरण :)
<minPrice>{local:minPrice($book/price, $book/discount)}</minPrice>