achieves in a different and laborious way.
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:choose> <xsl:when test='@size="H1"'> <H1> <xsl:value-of select="."/> </H1> </xsl:when> <xsl:when test='@size="H3"'> <H3> <xsl:value-of select="."/> </H3> </xsl:when> <xsl:when test='@size="b"'> <b> <xsl:value-of select="."/> </b> </xsl:when> <xsl:when test='@size="sub"'> <sub> <xsl:value-of select="."/> </sub> </xsl:when> <xsl:when test='@size="sup"'> <sup> <xsl:value-of select="."/> </sup> </xsl:when> </xsl:choose> </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>