On 26.07.2020 23:34, Wolfhart Totschnig
wolfhart(_dot_)totschnig(_at_)mail(_dot_)udp(_dot_)cl
wrote:
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?
It is not supported as far as I know, if you really want to break up the
string with a regular expression then in XPath/XSLT 3 you can use
fn:analyze-string
('abc' => analyze-string('^(.)'))!(upper-case(*:match) || *:non-match)
although for that simple example of identifying the first character that
looks rather convoluted to me.
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--