Well I would move to templates e.g.
Code:
<xsl:template match="span[@style = 'font-style: italic']">
<i>
<xsl:apply-templates/>
</i>
</xsl:template>
<xsl:template match="span[@style = 'font-style: bold']">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>
<xsl:template match="span[@style = 'text-decoration: underline']">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>
The major problem of course is dealing with an input format that allows combining styles in the 'style' attribute e.g. if you have input with
Code:
<span style="text-decoration: underline; font-weight: bold;">...</span>