I suspect there are a few basic concepts that you're still struggling with.
Firstly, you use XSLT to transform your XML into HTML. Then the browser displays the HTML. The first thing you need to do is to decide what HTML you want to generate (you might need to do an HTML mockup first, and test it in the browser). Only then can you start writing the XSLT code to generate that HTML.
Secondly, an XSLT stylesheet is always well-formed XML. That makes code like this a nonsense:
<tr>
<td><img src="{@icon}" name="{@name}" onmouseover='<xsl:for-each select="Product"/>
<td><img src="{@Icon}"/></td>
</xsl:for-each>;'/></td>
</tr>
I'm afraid this code is so far from correct XSLT that I can't imagine for the life of me what you thought it might do.
If you need to compute the value of an attribute in the generated HTML, you can use the "attribute value template" (AVT) notation:
<img src="{xpath-expression}"/>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference