I think your question is inaccurate, because there's nothing in your code that displays the @width attribute. Your XML source must have been different to get this effect.
Instead of xsl:value-of, use xsl:apply-templates. The default template rule for text nodes will kick in, and you can override this with a template rule for match="colgroup/col" that displays the values in bold:
<xsl:template match="p">
<p><xsl:apply-templates/></p>
</xsl:template>
<xsl:template match="colgroup/col">
<b><xsl:apply-templates/></b>
</xsl:template>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference