I'm not sure whether you want to add italics, bold etc by choosing a CSS class/style or by adding elements such as <b>, <i>, etc. The solution is probably a bit different for the two cases.
One solution to this is to apply templates to the same element repeatedly in different modes:
<xsl:template match='head[@type="MAIN"]'>
<h3>
<xsl:apply-templates select="." mode="rend"/>
</h3>
</xsl:template>
.. other values of @type similarly ..
<xsl:template match="head[@rend='bo']" mode="rend">
<b>
<xsl:apply-templates/>
</b>
</xsl:template>
.. other values of @rend similarly
Alternatively you can apply templates to the attribute node itself:
<xsl:template match='head[@type="MAIN"]'>
<h3>
<xsl:apply-templates select="@rend"/>
</h3>
</xsl:template>
.. other values of @type similarly ..
<xsl:template match="@rend[.='bo']">
<b>
<xsl:apply-templates select="../child::node()"/>
</b>
</xsl:template>
.. other values of @rend similarly
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference