This:
<xsl:value-of select="rule4[@overall_deduction]"/>
displays the string-value of the first rule4 element that has an @overall_deduction attribute.
So there are two errors: (a) you want to display the value of the attribute, not the containing element (which has empty content), and (b) you don't want the value of the first rule4 element, you want the one that has @application_code='A' (I assume).
One way to do this is
<xsl:for-each select="rule4[@application_code='A']">
<xsl:text>Rule 4</xsl:text>
<xsl:value-of select="@overall_deduction"/>
<xsl:text> All Bets</xsl:text>
</xsl:for-each>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference