وظائف XQuery
يشترك XQuery 1.0 و XPath 2.0 و XSLT 2.0 في نفس مكتبة الوظائف.
وظائف XQuery
XQuery مبني على تعبيرات XPath. يشترك XQuery 1.0 و XPath 2.0 في نفس نموذج البيانات ويدعمان نفس الوظائف والمشغلين.
يمكنك أيضًا تحديد الوظائف الخاصة بك في XQuery.
أنواع بيانات XQuery
يشارك XQuery نفس أنواع البيانات مثل XML Schema 1.0 (XSD).
أمثلة على استدعاءات الوظائف
يمكن أن تظهر استدعاء دالة حيث قد يظهر التعبير. انظر إلى الأمثلة أدناه:
مثال 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 prefix:function_name($parameter as datatype)
as returnDatatype
{
...function code here...
};
ملاحظات حول الوظائف المعرفة من قبل المستخدم:
- استخدم الكلمة الأساسية للإعلان عن الوظيفة
- يجب أن يكون اسم الوظيفة مسبوقًا
- نوع بيانات المعلمات هو في الغالب نفس أنواع البيانات المحددة في مخطط XML
- يجب أن يكون جسم الوظيفة محاطًا بأقواس مجعدة
مثال لوظيفة معرّفة من قبل المستخدم تم التصريح عنها في الاستعلام
declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)
as xs:decimal?
{
let $disc := ($p * $d) div 100
return ($p - $disc)
};
Below is an example of how to call the function above:
<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>