Если создаваемые элементы заранее неизвестны, и нужно обработать только несколько известных элементов другим, более конкретным способом, вот более динамичное решение :
<xsl:template match="*">
<xsl:element name="{translate(name(), $vUpper, $vLower)}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
, где $vUpper
и $vLower
определены как:
<xsl:variable name="vUpper" select=
"'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
"/>
<xsl:variable name="vLower" select=
"'abcdefghijklmnopqrstuvwxyz'
"/>
Должны быть шаблоны, соответствующие нескольким известным элементам, которые не должны обрабатываться описанным выше способом. Эти более конкретные шаблоны переопределяют более общий шаблон выше. Например:
<xsl:template match="specificName">
<!-- Specific processing here -->
</xsl:template>
Кроме того, общий шаблон выше, соответствующие элементы должны переопределять «правило идентификации» (шаблон).