XPath, XQuery, and XSLT Function Reference Manual
The reference manual below defines functions in XPath 2.0, XQuery 1.0, and XSLT 2.0.
Function Reference Manual
| Access<br>Errors and Tracing<br>Numeric<br>String | AnyURI<br>Logical<br>Duration/Date/Time<br>QName | Node<br>Sequence<br>Context |
Access Functions
Name | Description |
---|---|
fn:node-name(node) | Returns the node name of the parameter node. |
fn:nilled(node) | Returns a boolean value indicating whether the parameter node is nilled. |
fn:data(item.item,...) | Accepts a sequence of items and returns a sequence of atomic values. |
fn:base-uri()<br>fn:base-uri(node) | Returns the value of the base-uri attribute for the current node or the specified node. |
fn:document-uri(node) | Returns the value of the document-uri attribute for the specified node. |
Error and Tracing Functions
Name | Description |
---|---|
fn:error()<br>fn:error(error)<br>fn:error(error, description)<br>fn:error(error, description, error-object) | Example: error(fn:QName('http://example.com/test', 'err:toohigh'), 'Error: Price is too high') Result: Returns http://example.com/test#toohigh and the string "Error: Price is too high" to the external processing environment. |
fn:trace(value, label) | Used for debugging queries. |
Numeric Functions
Name | Description |
---|---|
fn:number(arg) | Returns the numeric value of the parameter. The parameter can be a boolean, string, or node set. Example: number('100') Result: 100 |
fn:abs(num) | Returns the absolute value of the parameter. Example: abs(3.14) Result: 3.14 Example: abs(-3.14) Result: 3.14 |
fn:ceiling(num) | Returns the smallest integer greater than the num parameter. Example: ceiling(3.14) Result: 4 |
fn:floor(num) | Returns the largest integer not greater than the num parameter. Example: floor(3.14) Result: 3 |
fn:round(num) | Rounds the num parameter to the nearest integer. Example: round(3.14) Result: 3 |
fn:round-half-to-even() | Example: round-half-to-even(0.5) Result: 0 Example: round-half-to-even(1.5) Result: 2 Example: round-half-to-even(2.5) Result: 2 |
String Functions
Name | Description |
---|---|
fn:string(arg) | Returns the string value of the parameter. The parameter can be a number, boolean, or node set. Example: string(314) Result: "314" |
fn:codepoints-to-string(int, int, ...) | Returns a string from a sequence of code points. Example: codepoints-to-string(84, 104, 233, 114, 232, 115, 101) Result: 'Thérèse' |
fn:string-to-codepoints(string) | Returns a sequence of code points from a string. Example: string-to-codepoints("Thérèse") Result: 84, 104, 233, 114, 232, 115, 101 |
fn:codepoint-equal(comp1, comp2) | Returns true if the value of comp1 is equal to the value of comp2 according to the Unicode code point collation (http://www.w3.org/2005/02/xpath-functions/collation/codepoint), otherwise returns false. |
fn:compare(comp1,comp2)<br>fn:compare(comp1,comp2,collation) | If comp1 is less than comp2, returns -1. If comp1 is equal to comp2, returns 0. If comp1 is greater than comp2, returns 1. (Depending on the collation rules used). Example: compare('ghi', 'ghi') Result: 0 |
fn:concat(string,string,...) | Returns the concatenation of the strings. Example: concat('XPath ','is ','FUN!') Result: 'XPath is FUN!' |
fn:string-join((string,string,...),sep) | Returns the concatenation of the string arguments with the sep parameter as a separator. Example: string-join(('We', 'are', 'having', 'fun!'), ' ') Result: 'We are having fun!' Example: string-join(('We', 'are', 'having', 'fun!')) Result: 'Wearehavingfun!' Example: string-join((), 'sep') Result: '' |
fn:substring(string,start,len)<br>fn:substring(string,start) | Returns the substring starting at the start position with the specified length. The first character is at position 1. If the len parameter is omitted, returns the substring from the start position to the end of the string. Example: substring('Beatles',1,4) Result: 'Beat' Example: substring('Beatles',2) Result: 'eatles' |
fn:string-length(string)<br>fn:string-length() | Returns the length of the specified string. If no string parameter is provided, returns the length of the string value of the current node. Example: string-length('Beatles') Result: 7 |
fn:normalize-space(string)<br>fn:normalize-space() | Removes leading and trailing whitespace from the specified string, replaces all internal sequences of whitespace with one, and returns the result. If no string parameter is provided, processes the current node. Example: normalize-space(' The XML ') Result: 'The XML' |
fn:normalize-unicode() | Performs Unicode normalization. |
fn:upper-case(string) | Converts the string parameter to uppercase. Example: upper-case('The XML') Result: 'THE XML' |
fn:lower-case(string) | Converts the string parameter to lowercase. Example: lower-case('The XML') Result: 'the xml' |
fn:translate(string1,string2,string3) | Replaces string2 in string1 with string3. Example: translate('12:30','30','45') Result: '12:45' Example: translate('12:30','03','54') Result: '12:45' Example: translate('12:30','0123','abcd') Result: 'bc:da' |
fn:escape-uri(stringURI,esc-res) | Example: escape-uri("http://example.com/test#car", true()) Result: "http%3A%2F%2Fexample.com%2Ftest#car" Example: escape-uri("http://example.com/test#car", false()) Result: "http://example.com/test#car" Example: escape-uri("http://example.com/~bébé", false()) Result: "http://example.com/~b%C3%A9b%C3%A9" |
fn:contains(string1,string2) | Returns true if string1 contains string2, otherwise returns false. Example: contains('XML','XM') Result: true |
fn:starts-with(string1,string2) | Returns true if string1 starts with string2, otherwise returns false. Example: starts-with('XML','X') Result: true |
fn:ends-with(string1,string2) | Returns true if string1 ends with string2, otherwise returns false. Example: ends-with('XML','X') Result: false |
fn:substring-before(string1,string2) | Returns the substring of string1 before the first occurrence of string2. Example: substring-before('12/10','/') Result: '12' |
fn:substring-after(string1,string2) | Returns the substring of string1 after the first occurrence of string2. Example: substring-after('12/10','/') Result: '10' |
fn:matches(string,pattern) | Returns true if the string parameter matches the specified pattern, otherwise returns false. Example: matches("Merano", "ran") Result: true |
fn:replace(string,pattern,replace) | Replaces the specified pattern with the replace parameter and returns the result. Example: replace("Bella Italia", "l", "") Result: 'Bea Itaia' Example: replace("Bella Italia", "l", "") Result: 'Bea Itaia' |
fn:tokenize(string,pattern) | Example: tokenize("XPath is fun", "\s+") Result: ("XPath", "is", "fun") |
Functions for anyURI
Name | Description |
---|---|
fn:resolve-uri(relative,base) |
Functions for boolean values
Name | Description |
---|---|
fn:boolean(arg) | Returns the boolean value of a number, string, or node set. |
fn:not(arg) | Converts the parameter to a boolean value using the boolean() function. Returns true if the boolean value is false, and false if the boolean value is true. Example: not(true()) Result: false |
fn:true() | Returns the boolean value true. Example: true() Result: true |
fn:false() | Returns the boolean value false. Example: false() Result: false |
Functions for duration, date, and time
Functions for extracting components of dates, times, and durations
Name | Description |
---|---|
fn:dateTime(date,time) | Converts the parameters to a date and time. |
fn:years-from-duration(datetimedur) | Returns the year component of the parameter value as an integer, expressed in standard lexical representation. |
fn:months-from-duration(datetimedur) | Returns the month component of the parameter value as an integer, expressed in standard lexical representation. |
fn:days-from-duration(datetimedur) | Returns the day component of the parameter value as an integer, expressed in standard lexical representation. |
fn:hours-from-duration(datetimedur) | Returns the hour component of the parameter value as an integer, expressed in standard lexical representation. |
fn:minutes-from-duration(datetimedur) | Returns the minute component of the parameter value as an integer, expressed in standard lexical representation. |
fn:seconds-from-duration(datetimedur) | Returns the second component of the parameter value as a decimal number, expressed in standard lexical representation. |
fn:year-from-dateTime(datetime) | Returns the year component of the parameter's local value as an integer. Example: year-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Result: 2005 |
fn:month-from-dateTime(datetime) | Returns the month component of the parameter's local value as an integer. Example: month-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Result: 01 |
fn:day-from-dateTime(datetime) | Returns the integer representing the day part of the local value of the parameter. Example: day-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Result: 10 |
fn:hours-from-dateTime(datetime) | Returns the integer representing the hour part of the local value of the parameter. Example: hours-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Result: 12 |
fn:minutes-from-dateTime(datetime) | Returns the integer representing the minute part of the local value of the parameter. Example: minutes-from-dateTime(xs:dateTime("2005-01-10T12:30-04:10")) Result: 30 |
fn:seconds-from-dateTime(datetime) | Returns the decimal number representing the second part of the local value of the parameter. Example: seconds-from-dateTime(xs:dateTime("2005-01-10T12:30:00-04:10")) Result: 0 |
fn:timezone-from-dateTime(datetime) | Returns the timezone part of the parameter, if present. |
fn:year-from-date(date) | Returns the integer representing the year part of the local value of the parameter. Example: year-from-date(xs:date("2005-04-23")) Result: 2005 |
fn:month-from-date(date) | Returns the integer representing the month part of the local value of the parameter. Example: month-from-date(xs:date("2005-04-23")) Result: 4 |
fn:day-from-date(date) | Returns the integer representing the day part of the local value of the parameter. Example: day-from-date(xs:date("2005-04-23")) Result: 23 |
fn:timezone-from-date(date) | Returns the timezone part of the parameter, if present. |
fn:hours-from-time(time) | Returns the integer representing the hour part of the local value of the parameter. Example: hours-from-time(xs:time("10:22:00")) Result: 10 |
fn:minutes-from-time(time) | Returns the integer representing the minute part of the local value of the parameter. Example: minutes-from-time(xs:time("10:22:00")) Result: 22 |
fn:seconds-from-time(time) | Returns the integer representing the second part of the local value of the parameter. Example: seconds-from-time(xs:time("10:22:00")) Result: 0 |
fn:timezone-from-time(time) | Returns the timezone part of the parameter, if present. |
fn:adjust-dateTime-to-timezone(datetime, timezone) | Returns the dateTime without a timezone if the timezone parameter is empty. Otherwise, returns the dateTime with a timezone. |
fn:adjust-date-to-timezone(date, timezone) | Returns the date without a timezone if the timezone parameter is empty. Otherwise, returns the date with a timezone. |
fn:adjust-time-to-timezone(time, timezone) | Returns the time without a timezone if the timezone parameter is empty. Otherwise, returns the time with a timezone. |
Functions Related to QNames
Name | Description |
---|---|
fn:QName() | |
fn:local-name-from-QName() | |
fn:namespace-uri-from-QName() | |
fn:namespace-uri-for-prefix() | |
fn:in-scope-prefixes() | |
fn:resolve-QName() |
Functions About Nodes
Name | Description |
---|---|
fn:name()<br>fn:name(nodeset) | Returns the name of the current node or the first node in the specified node set. |
fn:local-name()<br>fn:local-name(nodeset) | Returns the name of the current node or the first node in the specified node set - without the namespace prefix. |
fn:namespace-uri()<br>fn:namespace-uri(nodeset) | Returns the namespace URI of the current node or the first node in the specified node set. |
fn:lang(lang) | Returns true if the language of the current node matches the specified language. Example: Lang("en") is true for<br><p xml:lang="en">...</p> Example: Lang("de") is false for<br><p xml:lang="en">...</p> |
fn:root()<br>fn:root(node) | Returns the root node of the node tree to which the current node or the specified node belongs. Usually the document node. |
Functions Related to Sequences
General Functions
Name | Description |
---|---|
fn:index-of((item,item,...),searchitem) | Returns the positions of the items in the sequence that are equal to the searchitem parameter. Example: index-of ((15, 40, 25, 40, 10), 40) Result: (2, 4) Example: index-of (("a", "dog", "and", "a", "duck"), "a") Result: (1, 4) Example: index-of ((15, 40, 25, 40, 10), 18) Result: () |
fn:remove((item,item,...),position) | Returns a new sequence constructed from the item parameter, with the item specified by the position parameter removed. Example: remove(("ab", "cd", "ef"), 0) Result: ("ab", "cd", "ef") Example: remove(("ab", "cd", "ef"), 1) Result: ("cd", "ef") Example: remove(("ab", "cd", "ef"), 4) Result: ("ab", "cd", "ef") |
fn:empty(item,item,...) | Returns true if the parameter value is an empty sequence, otherwise returns false. Example: empty(remove(("ab", "cd"), 1)) Result: false |
fn:exists(item,item,...) | Returns true if the parameter value is not an empty sequence, otherwise returns false. Example: exists(remove(("ab"), 1)) Result: false |
fn:distinct-values((item,item,...),collation) | Returns distinct values. Example: distinct-values((1, 2, 3, 1, 2)) Result: (1, 2, 3) |
fn:insert-before((item,item,...),pos,inserts) | Returns a new sequence constructed from the item parameter, with the value of the inserts parameter inserted at the position specified by the pos parameter. Example: insert-before(("ab", "cd"), 0, "gh") Result: ("gh", "ab", "cd") Example: insert-before(("ab", "cd"), 1, "gh") Result: ("gh", "ab", "cd") Example: insert-before(("ab", "cd"), 2, "gh") Result: ("ab", "gh", "cd") Example: insert-before(("ab", "cd"), 5, "gh") Result: ("ab", "cd", "gh") |
fn:reverse((item,item,...)) | Returns the specified items in reverse order. Example: reverse(("ab", "cd", "ef")) Result: ("ef", "cd", "ab") Example: reverse(("ab")) Result: ("ab") |
fn:subsequence((item,item,...),start,len) | Returns the item sequence starting from the position specified by the start parameter, with the length specified by the len parameter. The position of the first item is 1. Example: subsequence(($item1, $item2, $item3,...), 3) Result: ($item3, ...) Example: subsequence(($item1, $item2, $item3, ...), 2, 2) Result: ($item2, $item3) |
fn:unordered((item,item,...)) | Returns items in an implementation-dependent order. |
Functions Testing Sequence Capacity
Name | Description |
---|---|
fn:zero-or-one(item,item,...) | Returns the arguments if they contain zero or one item, otherwise generates an error. |
fn:one-or-more(item,item,...) | Returns the arguments if they contain one or more items, otherwise generates an error. |
fn:exactly-one(item,item,...) | Returns the arguments if they contain exactly one item, otherwise generates an error. |
Equals, Union, Intersection and Except
Name | Description |
---|---|
fn:deep-equal(param1,param2,collation) | Returns true if param1 and param2 are deep-equal to each other, otherwise returns false. |
Aggregate Functions
Name | Description |
---|---|
fn:count((item,item,...)) | Returns the number of nodes. |
fn:avg((arg,arg,...)) | Returns the average of the argument values. |
Example: avg((1,2,3)) Result: 2 | | fn:max((arg,arg,...)) | Returns the argument that is greater than the others. Example: max((1,2,3)) Result: 3
Example: max(('a', 'k')) Result: 'k' | | fn:min((arg,arg,...)) | Returns the argument that is less than the others. Example: min((1,2,3)) Result: 1
Example: min(('a', 'k')) Result: 'a' | | fn:sum(arg,arg,...) | Returns the sum of the numeric values of each node in the specified node set. |
Sequence Generation Functions
Name | Description |
---|---|
fn:id((string,string,...),node) | Returns a sequence of element nodes that have an ID value equal to the value of one or more of the values specified in the string argument |
fn:idref((string,string,...),node) | Returns a sequence of element or attribute nodes that have an IDREF value equal to the value of one or more of the values specified in the string argument |
fn:doc(URI) | |
fn:doc-available(URI) | Returns true if the doc() function returns a document node, otherwise returns false. |
fn:collection()<br>fn:collection(string) |
Context Functions
Name | Description |
---|---|
fn:position() | Returns the index position of the node currently being processed. Example: //book[position()<=3] Result: Selects the first three book elements |
fn:last() | Returns the number of items in the list of nodes being processed. Example: //book[last()] Result: Selects the last book element |
fn:current-dateTime() | Returns the current dateTime (with timezone). |
fn:current-date() | Returns the current date (with timezone). |
fn:current-time() | Returns the current time (with timezone). |
fn:implicit-timezone() | Returns the value of the implicit timezone. |
fn:default-collation() | Returns the value of the default collation. |
fn:static-base-uri() | Returns the value of the base-uri. |