Forum Moderators: open
<table>
<tr>
<td style="text-align:center;width:36px;border-left:0px;">No.</td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form101_A_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form101_B_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form102_A_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form102_B1_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form102_B2_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form103_A_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form103_B_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form1_A_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:80px;"><xsl:value-of select="format-number(Form1_B_Number,'#,###,###,##0')"/></td>
<td style="text-align:right;width:88px;"><xsl:value-of select="format-number(Form101_A_Number + Form101_B_Number + Form102_A_Number + Form102_B1_Number + Form102_B2_Number + Form103_A_Number + Form103_B_Number + Form1_A_Number + Form1_B_Number,'#,###,###,##0')"/></td>
</tr>
<tr>
<td style="text-align:center;border-left:0px;">Value</td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form101_A_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form101_B_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form102_A_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form102_B1_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form102_B2_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form103_A_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form103_B_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form1_A_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form1_B_Value,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form101_A_Value + Form101_B_Value + Form102_A_Value + Form102_B1_Value + Form102_B2_Value + Form103_A_Value + Form103_B_Value + Form1_A_Value + Form1_B_Value,'$#,###,###,##0')"/></td>
</tr>
<tr>
<td style="text-align:center;border-left:0px;">Avg.</td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form101_A_Value div Form101_A_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form101_B_Value div Form101_B_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form102_A_Value div Form102_A_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form102_B1_Value div Form102_B1_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form102_B2_Value div Form102_B2_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form103_A_Value div Form103_A_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form103_B_Value div Form103_B_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form1_A_Value div Form1_A_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;"><xsl:value-of select="format-number(Form1_B_Value div Form1_B_Number,'$#,###,###,##0')"/></td>
<td style="text-align:right;background-color:#000000;"> </td>
</tr>
</table> Thanks for any insight
Dan
zero.xml
--------
<?xml version="1.0"?>
<root>
<number>2</number>
<number>1</number>
<number>0</number>
<number>-1</number>
<number>-2</number>
</root>
zero.xsl
--------
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:variable name="newline">
<xsl:text>
</xsl:text>
</xsl:variable>
<xsl:template match="/">
<xsl:for-each select="root/number">
<xsl:variable name="result">
<xsl:call-template name="divide">
<xsl:with-param name="number">
<xsl:value-of select="."/>
</xsl:with-param>
<xsl:with-param name="divisor">
<xsl:value-of select="number(. - 1)"/>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="."/>
<xsl:text> / </xsl:text>
<xsl:value-of select="number(. - 1)"/>
<xsl:text> = </xsl:text>
<xsl:value-of select="$result"/>
<xsl:value-of select="$newline"/>
</xsl:for-each>
</xsl:template>
<xsl:template name="divide">
<xsl:param name="number"/>
<xsl:param name="divisor"/>
<xsl:variable name="result">
<xsl:value-of select="$number div $divisor"/>
</xsl:variable>
<xsl:variable name="result2">
<xsl:choose>
<xsl:when test="contains(number($result),'NaN')">
<xsl:text>0</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$result"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<!-- $result gives infinity else $result2 for 0 -->
<xsl:value-of select="$result2"/>
</xsl:template>
</xsl:stylesheet>
which gives
<?xml version="1.0"?>
2 / 1 = 2
1 / 0 = Infinity
0 / -1 = 0
-1 / -2 = 0.5
-2 / -3 = 0.66666666666667
or
<?xml version="1.0"?>
2 / 1 = 2
1 / 0 = 0
0 / -1 = 0
-1 / -2 = 0.5
-2 / -3 = 0.66666666666667
depending whether u use
$result or $result2 in the template.