XSL - 如何大写重音字母

时间:2017-04-18 07:17:55

标签: xml xslt

我有以下xml。

<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),' ')"/>

1 个答案:

答案 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>