The resulting xml file I am getting is:
of course without showing us the input file it;'s a bit hard to guess...
but
<xsl:copy>
that makes a tr node
<xsl:for-each select="td">
<xsl:attribute name="class"
that (repeadedly) adds a class attribute to this tr node once for each
td in the source.
You presumably want something like
<xsl:template match="tr[td[not(a) and text() != 'Data not available' and
not(@*)]]">
<xsl:copy>
<xsl:choose>
<xsl:when test="position() mod 2 = 0">
<xsl:for-each select="td">
<td class="evenRowStyle">
<xsl:apply-templates select="node()|@*"/>
</td>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="td">
<td class="oddRowStyle">
<xsl:apply-templates select="node()|@*"/>
</td>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</xsl:copy>
</xsl:template>
_____________________________________________________________________
This message has been checked for all known viruses by Star Internet
delivered through the MessageLabs Virus Scanning Service. For further
information visit http://www.star.net.uk/stats.asp or alternatively call
Star Internet for details on the Virus Scanning Service.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list