Easy Tutorial
❮ Xpath Summary Xpath Intro ❯

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.
❮ Xpath Summary Xpath Intro ❯