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>