xsl:element generates elements in time of processing.
File: Data.xml <?xml version="1.0" encoding="utf-8"?> <data> <text size="H1">Header1</text> <text size="H3">Header3</text> <text size="b">Bold text</text> <text size="sub">Subscript</text> <text size="sup">Superscript</text> </data> File: Transform.xslt <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:for-each select="//text"> <xsl:element name="{@size}"> <xsl:value-of select="."/> </xsl:element> </xsl:for-each> </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?><H1>Header1</H1><H3>Header3</H3><b>Bold text</b><sub>Subscript</sub><sup>Superscript</sup>