The <xsl:element> allows you to dynamically calculate an element name.
<xsl:element
name = { qname }
namespace = { uri-reference }
use-attribute-sets = qnames>
<!-- Content: template -->
</xsl:element>
The element name
The namespace URI reference for the element
Lists the names of attribute sets (<xsl:attribute-set>) to be copied into the result tree
An example of <xsl:element> in use:
<xsl:template name="process.table.cell">
<xsl:param name="cellgi">td</xsl:param>
<xsl:element name="{$cellgi}">
<!-- whatever processing is desired -->
</xsl:element>
</xsl:template>