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>