2017-04-18 132 views
0

我有以下的XML。XSL - 你如何大寫重音字母

<surname>\`{a}bcd efgh</surname> 

我想大寫第一個字母和輸出格式如下。

<surname>\`{A}bcd Efgh</surname> 

我使用下面的代碼

<xsl:sequence select="string-join(for $x in tokenize($textone,'\s') return my:titleCase($x),' ')"/> 
+0

示例代碼中不包含重音字母。你真的需要幫助大寫字母,如'á'和'è'嗎? –

回答

1

你可以使用analyze-string查找字符串中的一個字母第一次出現。

試試這個XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
       xmlns:my="my-functions"> 
<xsl:output method="text" /> 

<xsl:function name="my:titleCase"> 
    <xsl:param name="string"/> 
    <xsl:analyze-string select="$string" regex="^([^A-Za-z]*)([A-Za-z])(.*)$"> 
    <xsl:matching-substring> 
     <xsl:value-of select="concat(regex-group(1), upper-case(regex-group(2)), regex-group(3))" /> 
    </xsl:matching-substring> 
    </xsl:analyze-string> 
</xsl:function> 

<xsl:template match="text()"> 
<xsl:variable name="textone" select="." /> 
<xsl:sequence select="string-join(for $x in tokenize($textone,'\s') return my:titleCase($x),' ')"/> 
</xsl:template> 
</xsl:stylesheet> 
+0

對於遲到的回覆感到抱歉。謝謝你的幫助 – Kevin