This instruction looks pretty random
Code:
<xsl:value-of select="$prices/Code[Letter=$letter]/Price"/>
because there are no elements called Code, Letter, or Price in your input, nor do you declare a variable called $prices.
Apart from that, the problem seems to be that you need a template rule to match the root node. Something like
Code:
<xsl:template match="/">
<output>
<xsl:apply-templates select="//Item[@no='2']"/>
</output>
</xsl:template>