Skip to content
String Functions

String Functions

concat

concat($arg1 as xs:anyAtomicType, $arg2 as xs:anyAtomicType, ...) as xs:string

Returns the concatenation of the string values of the arguments. Accepts two or more arguments.

concat('Hello', ' ', 'World')  →  "Hello World"

contains

contains($arg1 as xs:string, $arg2 as xs:string) as xs:boolean

Returns true if $arg1 contains $arg2 as a substring.

contains('abcde', 'cd')  →  true

contains-token

contains-token($input as xs:string*, $token as xs:string) as xs:boolean

contains-token($input as xs:string*, $token as xs:string, $collation as xs:string) as xs:boolean

Returns true if any string in $input, when tokenized by whitespace, contains $token. Useful for matching space-separated values such as HTML class attributes.

contains-token('red green blue', 'green')  →  true
contains-token('one two three', 'tw')  →  false

ends-with

ends-with($arg1 as xs:string, $arg2 as xs:string) as xs:boolean

Returns true if $arg1 ends with $arg2.

ends-with('hello.xml', '.xml')  →  true

encode-for-uri

encode-for-uri($uri as xs:string) as xs:string

Encodes a string for use in a URI by escaping reserved characters.

escape-html-uri

escape-html-uri($uri as xs:string) as xs:string

Escapes a URI for use in HTML attributes.

iri-to-uri

iri-to-uri($iri as xs:string) as xs:string

Converts an IRI to a URI by escaping non-ASCII characters.

lower-case

lower-case($arg as xs:string) as xs:string

Converts a string to lower case.

lower-case('ABC')  →  "abc"

matches

matches($input as xs:string, $pattern as xs:string) as xs:boolean

matches($input as xs:string, $pattern as xs:string, $flags as xs:string) as xs:boolean

Returns true if $input matches the regular expression $pattern. Optional $flags control matching behavior (e.g. "i" for case-insensitive).

matches('Hello', '^H')  →  true

normalize-space

normalize-space() as xs:string

normalize-space($arg as xs:string) as xs:string

Strips leading/trailing whitespace and collapses internal whitespace to single spaces.

normalize-space('  hello   world  ')  →  "hello world"

normalize-unicode

normalize-unicode($arg as xs:string) as xs:string

normalize-unicode($arg as xs:string, $form as xs:string) as xs:string

Returns the Unicode-normalized form of a string. Default form is NFC.

parse-xml

parse-xml($arg as xs:string) as document-node()

Parses a string containing a well-formed XML document and returns a document node.

parse-xml('<root><item>hello</item></root>')

parse-xml-fragment

parse-xml-fragment($arg as xs:string) as document-node()

Parses a string containing an XML fragment (which does not need to be a well-formed document) and returns a document node. The fragment is wrapped in a root element for parsing.

parse-xml-fragment('<a/>text<b/>')

replace

replace($input as xs:string, $pattern as xs:string, $replacement as xs:string) as xs:string

replace($input as xs:string, $pattern as xs:string, $replacement as xs:string, $flags as xs:string) as xs:string

Replaces all occurrences of $pattern in $input with $replacement.

replace('abcde', 'cd', 'XX')  →  "abXXe"

starts-with

starts-with($arg1 as xs:string, $arg2 as xs:string) as xs:boolean

Returns true if $arg1 starts with $arg2.

starts-with('hello', 'he')  →  true

string

string($arg as item()?) as xs:string

Returns the string value of the argument.

string-join

string-join($arg1 as xs:anyAtomicType*) as xs:string

string-join($arg1 as xs:anyAtomicType*, $arg2 as xs:string) as xs:string

Joins a sequence of strings with an optional separator.

string-join(('a', 'b', 'c'), '-')  →  "a-b-c"

string-length

string-length() as xs:integer

string-length($arg as xs:string) as xs:integer

Returns the number of characters in a string.

string-to-codepoints

string-to-codepoints($arg as xs:string) as xs:integer*

Returns the Unicode code points of a string.

codepoints-to-string

codepoints-to-string($arg as xs:integer*) as xs:string

Converts a sequence of Unicode code points to a string.

codepoint-equal

codepoint-equal($arg1 as xs:string, $arg2 as xs:string) as xs:boolean

Compares two strings by their Unicode code points.

substring

substring($sourceString as xs:string, $start as xs:double) as xs:string

substring($sourceString as xs:string, $start as xs:double, $length as xs:double) as xs:string

Returns a substring starting at position $start (1-based), optionally limited to $length characters.

substring('hello', 2, 3)  →  "ell"

substring-before

substring-before($arg1 as xs:string, $arg2 as xs:string) as xs:string

Returns the part of $arg1 before the first occurrence of $arg2.

substring-before('hello-world', '-')  →  "hello"

substring-after

substring-after($arg1 as xs:string, $arg2 as xs:string) as xs:string

Returns the part of $arg1 after the first occurrence of $arg2.

substring-after('hello-world', '-')  →  "world"

tokenize

tokenize($input as xs:string, $pattern as xs:string) as xs:string*

tokenize($input as xs:string, $pattern as xs:string, $flags as xs:string) as xs:string*

Splits $input around occurrences of $pattern.

tokenize('a, b, c', ',\s*')  →  ("a", "b", "c")

translate

translate($arg as xs:string, $mapString as xs:string, $transString as xs:string) as xs:string

Replaces individual characters in $arg according to a character map.

translate('abc', 'abc', 'ABC')  →  "ABC"

unparsed-text

unparsed-text($href as xs:string) as xs:string

unparsed-text($href as xs:string, $encoding as xs:string) as xs:string

Reads an external resource (such as a text file) and returns its contents as a string.

unparsed-text('data.txt')

unparsed-text-available

unparsed-text-available($href as xs:string) as xs:boolean

unparsed-text-available($href as xs:string, $encoding as xs:string) as xs:boolean

Returns true if the resource at $href exists and can be read as text.

unparsed-text-available('data.txt')  →  true

unparsed-text-lines

unparsed-text-lines($href as xs:string) as xs:string*

unparsed-text-lines($href as xs:string, $encoding as xs:string) as xs:string*

Reads an external resource and returns its contents as a sequence of strings, one per line.

unparsed-text-lines('data.csv')

upper-case

upper-case($arg as xs:string) as xs:string

Converts a string to upper case.

upper-case('abc')  →  "ABC"

compare

compare($arg1 as xs:string, $arg2 as xs:string) as xs:integer

Returns -1, 0, or 1 depending on whether $arg1 is less than, equal to, or greater than $arg2.