Not using keys:
<xsl:template match="cdlist">
<xsl:for-each select="cd">
<tr>
<td><xsl:value-of select="artist"/></td>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="@price"/></td>
<xsl:variable name="pricecolour" select="@price" />
<td>
<xsl:for-each select="/cdlist/pricelist/price">
<xsl:if test="$pricecolour = @ticket">
<xsl:value-of select="." />
</xsl:if>
</xsl:for-each>
</td>
</tr>
</xsl:for-each>
</xsl:template>
or
<td><xsl:value-of select="/cdlist/pricelist/price
[@ticket = $pricecolour]"/></td>
Each entry has to look up the complete set of possible prices to find the correct one