Используя xsl 2.0, я пытаюсь преобразовать весь текст в верхнем регистре так, чтобы в каждом верхнем регистре каждого узла была только первая буква текста. У них есть большое количество возможных дочерних элементов.
<text> text text text
<head>BLAH <unkownTag>BLAH</unkownTag> BLAH </head>
</text>
Я хотел бы преобразовать это в чтение
<text> text text text
<head>Blah <unkownTag>Blah</unkownTag> Blah </head>
</text>
Самое близкое, что я пришел, это
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="head/text()">
<xsl:value-of select="concat(upper-case(substring(.,1,1)),lower-case(substring(.,2)))"/>
</xsl:template>
Which gives me the result
<text> text text text
<head>Blah <unkownTag>BLAH</unkownTag> blah </head>
</text>
Как я могу добиться, чтобы преобразование в нижний регистр происходило во всех дочерних узлах head?