You should be able to replace:
Code:
<xsl:if test="TAX">
<TR STYLE="background-color:Yellow">
<TD COLSPAN="9">Taxes:
<xsl:if test="TAX/GST"> GST=<xsl:value-of select="TAX/GST"/> </xsl:if>
<xsl:if test="TAX/PST"> PST=<xsl:value-of select="TAX/PST"/> </xsl:if>
<xsl:if test="TAX/HST"> HST=<xsl:value-of select="TAX/HST"/> </xsl:if>
</TD>
</TR>
</xsl:if>
with:
Code:
<xsl:if test="TAX">
<TR STYLE="background-color:Yellow">
<TD COLSPAN="9">Taxes:
<xsl:for-each select="TAX/child::*">
<xsl:value-of select="name()"/>=<xsl:value-of select="."/>
<xsl:if test="position() != last()">;</xsl:if>
</xsl:for-each>
</TD>
</TR>
</xsl:if>
YOU ARE NOT USING XSLT to do this, you are using Microsoft's older and now deprecated draft version as evinced by your use of xsl:eval element. As this is the case I can't guarantee that this will work. Suggest you change xsl namespace to latest version and update stylesheets if possible. See advice at msdn.com/xml or any of the main xml web sites.
Joe (MVP - xml)