If you've found a solution, I suggest posting it as an answer here, but just for fun, this is how I would approach this:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:key name="kCol" match="td" use="count(. | preceding-sibling::td)"/>
<xsl:param name="column" select="'Price'" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="/">
<found>
<xsl:apply-templates select="table/thead/tr/th" />
</found>
</xsl:template>
<xsl:template match="th">
<xsl:if test=". = $column">
<xsl:apply-templates select="key('kCol', position())" />
</xsl:if>
</xsl:template>
</xsl:stylesheet>
When run with "Price" as the parameter value:
<found>
<td>$10</td>
<td>$20</td>
</found>
When run with "Name" as the parameter value:
<found>
<td>Premium Copier paper</td>
<td>Extra Copier paper</td>
</found>