XQuery Functions
XQuery 1.0, XPath 2.0, and XSLT 2.0 share the same functions library.
XQuery Functions
XQuery includes over 100 built-in functions. There are
functions for string values, numeric values, date and time comparison, node and QName manipulation, sequence manipulation, Boolean
values, and more. You can also define your own functions in XQuery.
XQuery Built-in Functions
The URI of the XQuery function namespace is:
http://www.w3.org/2005/02/xpath-functions
The default prefix for the function namespace is fn:.
Tip: Functions are often called with the fn: prefix, such as fn:string().
However, since fn: is the default prefix of the namespace, the function names do
not need to be prefixed when called.
The reference of all the built-in XQuery 1.0 functions is located
in our XPath tutorial.
Examples of Function Calls
A call to a function can appear where an expression may appear. Look at the examples below:
Example 1: In an element
| <name>{uppercase($booktitle)}</name> |
Example 2: In the predicate of a path expression
| doc("books.xml")/bookstore/book[substring(title,1,5)='Harry'] |
Example 3: In a let clause
| let $name := (substring($booktitle,1,4)) |
XQuery User-Defined Functions
If you cannot 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.
Syntax
declare function prefix:function_name($parameter AS datatype)
AS returnDatatype
{
...function code here...
} |
Notes on user-defined functions:
- Use the declare function keyword
- The name of the function must be prefixed
- The data type of the parameters are mostly the same as the data types
defined in XML Schema
- The body of the function must be surrounded by curly braces
Example of a User-defined Function Declared in the Query
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> |

Need an easy way to get data into XML, or transform XML to another format?
MapForce lets you map XML data to/from any combination of XML, database, flat file, Excel 2007, XBRL, or Web services data.
Then it transforms data instantly or auto-generates royalty-free data integration code for recurrent conversions.
Download a free, fully functional 30-day trial to experience the following features:
- Easy-to-use, graphical data mapping interface
- Instant data transformation
- XSLT 1.0/2.0 and XQuery code generation
- Java, C#, and C++ code generation
- Advanced data processing functions
- Support for all major relational databases including SQL Server, IBM DB2, Oracle, and more
- Visual Studio & Eclipse integration
Download a fully-functional trial today!
|
|
|
|