2012-09-08 106 views
-3

想知道我怎么能用xslt表单来显示发票总额per customer.please帮助,.tried我的最好与递归,但似乎没有让路,.for-每个循环只给我总的所有产品,但不是每张发票,..任何想法xslt总结发票上的总数

<customers> 
    <customer> 
    <clientname>troy madison</clientfname> 
    <invoices> 
    <invoiceDate>8/8/98</invoiceDate> 
     <product> 
     <PriceUnit>1000</PriceUnit> 
     <Ordered>2</Ordered> 
    </product> 
    <product> 
     <PriceUnit>5400</PriceUnit> 
     <Ordered>3</Ordered> 
    </product> 
    </invoices> 
    <invoices> 
    <invoiceDate>1/4/98</invoiceDate> 
     <product> 
      <PriceUnit>300</PriceUnit> 
      <Ordered>4</Ordered> 
     </product> 
     <product> 
     <PriceUnit>6000</PriceUnit> 
     <Ordered>1</Ordered> 
    </product> 
    </invoices> 
    <invoices> 
    <invoiceDate>03/5/99</invoiceDate> 
     <product> 
     <PriceUnit>549</PriceUnit> 
     <Ordered>1</Ordered> 
    </product> 
    <product> 
     <PriceUnit>320</PriceUnit> 
     <Ordered>2</Ordered> 
    </product> 
    </invoices> 
</customer> 
<customer> 
    <clientname>Morris</clientfname> 
    <invoices> 
     <invoiceDate>1/1/00</invoiceDate> 
     <product> 
      <PriceUnit>59</PriceUnit> 
      <Ordered>3</Ordered> 
     </product> 
     <product> 
      <PriceUnit>55</PriceUnit> 
      <Ordered>1</Ordered> 
     </product> 
    </invoices> 
    <invoices> 
    <invoiceDate>11/1/01</invoiceDate> 
     <product> 
     <PriceUnit>10</PriceUnit> 
     <Ordered>2</Ordered> 
     </product> 
     <product> 
     <PriceUnit>54</PriceUnit> 
     <Ordered>1</Ordered> 
     </product> 
    </invoices> 
    <invoices> 
     <invoiceDate>03/2/01</invoiceDate> 
     <product> 
      <PriceUnit>30</PriceUnit> 
      <Ordered>1</Ordered> 
     </product> 
     <product> 
     <PriceUnit>299</PriceUnit> 
     <Ordered>1</Ordered> 
     </product> 
    </invoices> 
</customer> 

+2

如果您复制xslt代码段,这也会有所帮助。除了解决方案外,您可以获得一些解决方案来解决您的解决方案。 – randominstanceOfLivingThing

+1

请编辑问题并提供确切的结果! –

回答

2

这种转变

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 
<xsl:strip-space elements="*"/> 

<xsl:template match="/*"> 
    <html> 
    <table border="1"> 
    <thead> 
     <tr> 
     <td>Name</td><td>Total</td> 
     </tr> 
    </thead> 
    <xsl:apply-templates/> 
    </table> 
    </html> 
</xsl:template> 

<xsl:template match="customer"> 
    <tr> 
    <td><xsl:value-of select="clientname"/></td> 
    <td><xsl:value-of select= 
    "sum(invoices/product/(PriceUnit*Ordered))"/></td> 
    </tr> 
</xsl:template> 
</xsl:stylesheet> 

当下面的XML文档(矫正畸形严重提供的文本)之后得到应用:

<customers> 
    <customer> 
    <clientname>troy madison</clientname> 
    <invoices> 
    <invoiceDate>8/8/98</invoiceDate> 
     <product> 
     <PriceUnit>1000</PriceUnit> 
     <Ordered>2</Ordered> 
    </product> 
    <product> 
     <PriceUnit>5400</PriceUnit> 
     <Ordered>3</Ordered> 
    </product> 
    </invoices> 
    <invoices> 
    <invoiceDate>1/4/98</invoiceDate> 
     <product> 
      <PriceUnit>300</PriceUnit> 
      <Ordered>4</Ordered> 
     </product> 
     <product> 
     <PriceUnit>6000</PriceUnit> 
     <Ordered>1</Ordered> 
    </product> 
    </invoices> 
    <invoices> 
    <invoiceDate>03/5/99</invoiceDate> 
     <product> 
     <PriceUnit>549</PriceUnit> 
     <Ordered>1</Ordered> 
    </product> 
    <product> 
     <PriceUnit>320</PriceUnit> 
     <Ordered>2</Ordered> 
    </product> 
    </invoices> 
</customer> 
<customer> 
    <clientname>Morris</clientname> 
    <invoices> 
     <invoiceDate>1/1/00</invoiceDate> 
     <product> 
      <PriceUnit>59</PriceUnit> 
      <Ordered>3</Ordered> 
     </product> 
     <product> 
      <PriceUnit>55</PriceUnit> 
      <Ordered>1</Ordered> 
     </product> 
    </invoices> 
    <invoices> 
    <invoiceDate>11/1/01</invoiceDate> 
     <product> 
     <PriceUnit>10</PriceUnit> 
     <Ordered>2</Ordered> 
     </product> 
     <product> 
     <PriceUnit>54</PriceUnit> 
     <Ordered>1</Ordered> 
     </product> 
    </invoices> 
    <invoices> 
     <invoiceDate>03/2/01</invoiceDate> 
     <product> 
      <PriceUnit>30</PriceUnit> 
      <Ordered>1</Ordered> 
     </product> 
     <product> 
     <PriceUnit>299</PriceUnit> 
     <Ordered>1</Ordered> 
     </product> 
    </invoices> 
</customer> 
</customers> 

产生(什么人只能猜测是!)想要的结果:

<html> 
    <table border="1"> 
     <thead> 
     <tr> 
      <td>Name</td> 
      <td>Total</td> 
     </tr> 
     </thead> 
     <tr> 
     <td>troy madison</td> 
     <td>26589</td> 
     </tr> 
     <tr> 
     <td>Morris</td> 
     <td>635</td> 
     </tr> 
    </table> 
</html>