After Johannes said to create a new element using xsl: element , you will probably do something like this
<xsl:template match="*">
<xsl:element name="{concat(upper-case(substring(name(), 1, 1)), substring(name(), 2))}">
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
If you use XSLT1.0, you cannot use the uppercase function . Instead, you have to do something with a cumbersome translate function
<xsl:element name="{concat(translate(substring(name(), 1, 1), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'), substring(name(), 2))}">
source
share