我是XML / XSL的新手,并且相信我需要一个函数来处理这个请求。
我有一个表单,需要有一个具有相同名称的节点的总数。
----------------- TOTAL Section --------------------------
<th align="left"><font size="2"><xsl:text>Total Freight & Other Charges:
</xsl:text></font></th>
<td><font size="2"> $<xsl:value-of select='format-number(Document-810/SUMMARY/SAC/SAC05, "###,###,##0.00")'/></font></td>
-------------各个节点的部分---------
<xsl:for-each select="Document-810/SUMMARY/SAC">
<tr>
<th align="left"><xsl:text>Amount</xsl:text></th>
<td colspan="2"><font size="2"><xsl:value-of select="concat('$', format-number(SAC05 div 100, '###,###,###.00'))" />
</font>
</td>
<th align="left"><font size="2"><xsl:text>Description</xsl:text></font></th>
<td colspan="7"><font size="2">
<xsl:value-of select="SAC15"/></font>
</td>
</tr>
</xsl:for-each>
答案 0 :(得分:0)
假设用于转换的输入XML如下所示
<Document-810>
<SUMMARY>
<SAC>
<SAC05>1000</SAC05>
<SAC15>Description 1</SAC15>
</SAC>
<SAC>
<SAC05>2000</SAC05>
<SAC15>Description 2</SAC15>
</SAC>
<SAC>
<SAC05>3000</SAC05>
<SAC15>Description 3</SAC15>
</SAC>
<SAC>
<SAC05>4000</SAC05>
<SAC15>Description 4</SAC15>
</SAC>
<SAC>
<SAC05>5000</SAC05>
<SAC15>Description 5</SAC15>
</SAC>
</SUMMARY>
</Document-810>
您可以使用以下代码段来计算<SAC05>
节点上下文中所有<SUMMARY>
个节点中值的总和。
<xsl:variable name="totalAmt" select="sum(SAC/SAC05) div 100" />
然后使用concat()
和format-number()
函数以$XXX.XX
格式显示值。
<xsl:value-of select="concat('$', format-number($totalAmt, '###,###,##0.00'))"/>
下面是可用于获取HTML表格的XSLT(您可以将其用作参考,并根据您的要求更改表格结构)。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="html" />
<xsl:strip-space elements="*" />
<xsl:template match="SUMMARY">
<html>
<body>
<table cellpadding="3" cellspacing="0" border="1">
<tr>
<th align="left"><font size="2"><xsl:text>Total Freight & Other Charges:</xsl:text></font></th>
<td align="left"><font size="2">
<xsl:variable name="totalAmt" select="sum(SAC/SAC05) div 100" />
<xsl:value-of select="concat('$', format-number($totalAmt, '###,###,##0.00'))"/>
</font></td>
</tr>
<tr>
<th align="left"><font size="2"><xsl:text>Amount</xsl:text></font></th>
<th align="left"><font size="2"><xsl:text>Description</xsl:text></font></th>
</tr>
<xsl:for-each select="SAC">
<tr>
<td><font size="2"><xsl:value-of select="concat('$', format-number(SAC05 div 100, '###,###,###.00'))" /></font></td>
<td><font size="2"><xsl:value-of select="SAC15" /></font></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
输出