一個XML資料統計問題,期待大家的討論

Liuwei-Sunny發表於2007-01-08

想不到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>

相關文章