fn:substring-before
Returns the part of $arg1
that precedes the first occurrence of
$arg2
, taking collations into account.
Signatures
fn:substring-before(
$arg1 as xs:string?,
$arg2 as xs:string?
) as xs:string
fn:substring-before(
$arg1 as xs:string?,
$arg2 as xs:string?,
$collation as xs:string
) as xs:string
Properties
The two-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on collations.
The three-argument form of this function is deterministic, context-dependent, and focus-independent. It depends on collations, and static base URI.
Rules
If the value of $arg1
or $arg2
is the empty sequence, or
contains only ignorable collation units, it is interpreted as the zero-length
string.
If the value of $arg2
is the zero-length string, then the function returns
the zero-length string.
If the value of $arg1
does not contain a string that is equal to the value
of $arg2
, then the function returns the zero-length string.
The collation used by this function is determined according to the rules in Choosing a collation.
The function returns the substring of the value of $arg1
that precedes in
the value of $arg1
the first occurrence of a sequence of collation units
that provides a minimal match to the collation units of $arg2
according to the collation that is used.
Minimal match is defined in [UTS #10].
Error Conditions
A dynamic error may be raised [ERRFOCH0004] if the specified collation does not support collation units.
Examples
The collation used in these examples, http://example.com/CollationA
is a
collation in which both "-" and "*" are ignorable collation units.
"Ignorable collation unit" is equivalent to "ignorable collation element" in [UTS #10].
The expression fn:substring-before ( "tattoo", "attoo")
returns "t"
.
The expression fn:substring-before ( "tattoo", "tatto")
returns ""
.
The expression fn:substring-before ((), ())
returns ""
.
The expression fn:substring-before ( "abcdefghi", "--d-e-",
"http://www.w3.org/2013/collation/UCA?lang=en;alternate=blanked;strength=primary")
returns "abc"
.
The expression fn:substring-before ( "abc--d-e-fghi", "--d-e-",
"http://www.w3.org/2013/collation/UCA?lang=en;alternate=blanked;strength=primary")
returns "abc--"
.
The expression fn:substring-before ( "a*b*c*d*e*f*g*h*i*", "***cde",
"http://www.w3.org/2013/collation/UCA?lang=en;alternate=blanked;strength=primary")
returns "a*b*"
.
The expression fn:substring-before ( "Eureka!", "--***-*---",
"http://www.w3.org/2013/collation/UCA?lang=en;alternate=blanked;strength=primary")
returns ""
. (The second argument contains only ignorable collation units and is
equivalent to the zero-length string.)