Converts a string to upper case.
If the value of
$arg is the empty sequence, the zero-length string is
Otherwise, the function returns the value of
$arg after translating every
character to its upper-case correspondent as
defined in the appropriate case mappings section in the Unicode standard . For versions of Unicode beginning with the 2.1.8 update, only
locale-insensitive case mappings should be applied. Beginning with version 3.2.0 (and
likely future versions) of Unicode, precise mappings are described in default case
operations, which are full case mappings in the absence of tailoring for particular
languages and environments. Every lower-case character that does not have an upper-case
correspondent, as well as every upper-case character, is included in the returned value
in its original form.
Case mappings may change the length of a string. In general, the
fn:lower-case functions are not inverses
of each other:
fn:lower-case(fn:upper-case($arg)) is not guaranteed to
$arg, nor is
Latin small letter dotless i (as used in Turkish) is perhaps the most prominent
lower-case letter which will not round-trip. The Latin capital letter i with dot above
is the most prominent upper-case letter which will not round trip; there are others,
such as Latin capital letter Sharp S (#1E9E) which was introduced in Unicode 5.1.
These functions may not always be linguistically appropriate (e.g. Turkish i without dot) or appropriate for the application (e.g. titlecase). In cases such as Turkish, a simple translation should be used first.
Because the function is not sensitive to locale, results will not always match user expectations. In Quebec, for example, the standard uppercase equivalent of "è" is "È", while in metropolitan France it is more commonly "E"; only one of these is supported by the functions as defined.
Many characters of class Ll lack uppercase equivalents in the Unicode case mapping tables; many characters of class Lu lack lowercase equivalents.