[xsl] case conversion with replace() (i.e., with a regular expression)

Subject: [xsl] case conversion with replace() (i.e., with a regular expression)
From: "Wolfhart Totschnig wolfhart.totschnig@xxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Sun, 26 Jul 2020 21:33:48 -0000
Dear list,

I need to convert the first character of a string from lower-case to upper-case. I know that I can do so with the following code:

concat(upper-case(substring(.,1,1)),substring(.,2))

I was wondering whether it can also be done with the replace() function, i.e., with a regular expression. I found out that some regular expression versions have the command \u for that. So I tried the following:

replace(.,'^(.)','\u$1')

But this produces an error with Saxon ("FORX0004: Invalid replacement string in replace(): \ character must be followed by \ or $"). Does this mean that case conversion is not available in the regular expression version implemented in XSLT? Or did I get the code wrong?

Thanks in advance for your help!
Wolfhart

Current Thread