一个XML数据统计问题,期待大家的讨论

想不到2007年的第一个帖子是有关问题的,呵呵。这段时间运气不是很好,可能跟本命年有关(没有穿红内裤),幸好快过完了。

在教学的时候遇到了一个XML数据统计问题,试了很多方法,还是没有搞定。想与大家一起讨论讨论。

如下一个XML文档:

<?xml version="1.0" ?>
<SUMMARY>
<PRODUCT ID="P001" NAME="Mini Bus" PRICE="75">
 <ORDER ID="O001">
  <SHIP_ADD>10 NEWSLAND ESTATE, NY</SHIP_ADD>
  <QUANTITY>30</QUANTITY>
 </ORDER>
 <ORDER ID="O002">
  <SHIP_ADD>11 NEWSLAND ESTATE</SHIP_ADD>
  <QUANTITY>50</QUANTITY>
 </ORDER>
</PRODUCT>
<PRODUCT ID="P002" NAME="Barbie Doll" PRICE="20">
 <ORDER ID="O003">
  <SHIP_ADD>10 LIONS STREET, BOSTON </SHIP_ADD>
  <QUANTITY>10</QUANTITY>
 </ORDER>
</PRODUCT>
</SUMMARY>

现在我要对这个XML文档进行一个统计操作。通过把各个产品的订单质量之和sum(QUANTITY)乘以该产品的价格(属性PRICE)可以得到该产品的销售额(<xsl:value-of select="(sum(ORDER/QUANTITY)*@PRICE)"/>),但是我需要统计该公司所有产品的总销售额。也就是说对上面各个产品的销售额再做一个求和,没有想到好的办法,希望有朋友和我一起讨论这个问题。

为了给大家节约时间,我把已经写好的部分XSL贴上来,显示的结果中我希望出现一行显示6200=(75×(30+50)+20×10),也就是所有产品销售额的总计。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<center>
<table border="10">
<tr>
<td>
Product and Order Details
</td>
</tr>
</table>
</center>


<xsl:for-each select="SUMMARY/PRODUCT">
Product ID:<xsl:value-of select="@ID"/><br/>
Product Name:<xsl:value-of select="@NAME"/><br/>
Product Price:<xsl:value-of select="@PRICE"/><br/>
<br/>

<xsl:for-each select="ORDER">
Order ID:<xsl:value-of select="@ID"/><br/>
Order Address:<xsl:value-of select="SHIP_ADD"/><br/>
Order Quantity:<xsl:value-of select="QUANTITY"/><br/>
Order Money:<xsl:value-of select="(QUANTITY*../@PRICE)"/><br/>
<hr color="green"/>
</xsl:for-each>


<br/>
Product Sales Value:
<xsl:value-of select="(sum(ORDER/QUANTITY)*@PRICE)"/>
<br/>
<hr color="red" size="5"/>
</xsl:for-each>


</xsl:template>
</xsl:stylesheet>

你可能感兴趣的:(xml,文档,border,XSL,产品,stylesheet)