Skip to main content

XQuery Functions

XQuery 1.0, XPath 2.0, and XSLT 2.0 share the same functions library.

XQuery Functions

XQuery is built on XPath expressions.

XQuery 1.0 and XPath 2.0 share the same data model and support the same functions and operators.

note

You can also define your own functions in XQuery.

XQuery Data Types

XQuery shares the same data types as XML Schema 1.0 (XSD).

Examples of Function Calls

A call to a function can appear where an expression can appear.

In an Element

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

In the Predicate of a path expression

doc("books.xml")/bookstore/book[substring(author,1,3)='Tom']

In a let Clause

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

XQuery User-Defined Functions

If you can't find the XQuery function you need, you can write your own.

User-defined functions can be defined in the query or in a separate library.

declare function _prefix:function_name_($_parameter as datatype_)
as _returnDatatype_
{
..._function code here_...
};
note
  • Use the declare function keyword
  • The function name must be prefixed
  • Parameter data type is mostly the same as data types defined in XML Schema
  • Function body must be surrounded by curly brackets

Example ### of a User-defined Function Declared in the XQuery

declare function local:minPrice($p as xs:decimal?,$d as xs:decimal?)
as xs:decimal?
{
let $disc := ($p * $d) div 100
return ($p - $disc)
};

This function can be called in this way:

<minPrice>{local:minPrice($book/price,$book/discount)}</minPrice>