xsl-list
[Top] [All Lists]

newbie xsl questions - grouping date ranges with associated sums

2004-11-28 21:49:49

is it possible to take the xml code below and create a grid with xsl

where i can group the mfd ranges (say all dates within now+3 years, then
the 
next 3 years, and then next 3 years)
and then sum the ttblack field for those ranges so that
a grid would be created with  rows as follows:


                           now -2007        2008-2011  2012-2015             
   
TEST                        300                   200           100
TEST1                         30                   10               5
Total                          330                   210           105


the numbers are not correct, but is the idea clear?

does a key need to be used to only sum the ranges for certain dates?


tia,
dk

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="Ed.xsl"?>
<Portfilio>
<AsOf>11/16/2004</AsOf>
<Trade>
        <TradeId>TEST</TradeId> 
        <Step mfd="11/16/2004" TTBlack="20"/>
        <Step mfd="05/18/2005" TTBlack="40"/>
        <Step mfd="11/18/2005" TTBlack="50"/>
        <Step mfd="11/20/2006" TTBlack="0"/>
        <Step mfd="05/18/2007" TTBlack="0"/>
        <Step mfd="11/19/2007" TTBlack="20"/>
        <Step mfd="05/19/2008" TTBlack="0"/>
        <Step mfd="11/18/2008" TTBlack="10"/>
        <Step mfd="05/18/2009" TTBlack="0"/>
        <TradeId>TEST1</TradeId>

        <Step mfd="11/16/2004" TTBlack="0"/>
        <Step mfd="11/18/2004" TTBlack="139"/>
        <Step mfd="05/18/2005" TTBlack="1,395"/>
        <Step mfd="11/18/2005" TTBlack="2,035"/>
        <Step mfd="05/18/2006" TTBlack="2,645"/>
        <Step mfd="11/20/2006" TTBlack="3,003"/>
        <Step mfd="05/18/2007" TTBlack="3,475"/>
        <Step mfd="11/19/2007" TTBlack="3,735"/>
        <Step mfd="05/19/2008" TTBlack="4,026"/>
        <Step mfd="11/18/2008" TTBlack="4,205"/>
        <Step mfd="05/18/2009" TTBlack="4,467"/>
        
</Trade>

 
 
 
this xsl below does not work:

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0"> 
<xsl:template match="Portfilio"> 
<html> 
    <body> 

   
        
     <xsl:for-each select="Step"> 

         <xsl:variable name="currentdate"> 
          <xsl:value-of select="substring(@date,7,4)"/>
          <xsl:value-of select="substring(@date,1,2)"/> 
          <xsl:value-of select="substring(@date,4,2)"/>
         </xsl:variable>
         <xsl:variable name="datebucket1">
          <xsl:value-of select="substring(@date,7,4)+3"/>
          <xsl:value-of select="substring(@date,1,2)"/> 
          <xsl:value-of select="substring(@date,4,2)"/>
         </xsl:variable>
        <xsl:variable name="datebucket2"> 
          <xsl:value-of select="substring(@date,7,4)+6"/>
          <xsl:value-of select="substring(@date,1,2)"/> 
          <xsl:value-of select="substring(@date,4,2)"/>
        </xsl:variable>
        <xsl:variable name="datebucket3"> 
          <xsl:value-of select="substring(@date,7,4)+9"/>
          <xsl:value-of select="substring(@date,1,2)"/> 
          <xsl:value-of select="substring(@date,4,2)"/>
        </xsl:variable>

        <!--  <xsl:value-of select="$currentdate"/> 
        <br></br>
          <xsl:value-of select="$datebucket1"/> 
        <br></br>
          <xsl:value-of select="$datebucket2"/> 
        <br></br>
          <xsl:value-of select="$datebucket3"/> -->
        
         <br></br>           

        <xsl:variable name="MinFlowDate"> 
          <xsl:value-of select="substring(@MinFlowDate,7,4)"/>
          <xsl:value-of select="substring(@MinFlowDate,1,2)"/> 
          <xsl:value-of select="substring(@MinFlowDate,4,2)"/>
        </xsl:variable>

        <xsl:variable name="amt"> 
             <xsl:value-of select="format-number(translate(@StepCharge_TTBlack, 
',', ''), '.00')"/>
        </xsl:variable>
        

        
       
        <br></br>

        
         <xsl:value-of select="number($MinFlowDate)"/> 
    <br></br>   
      <xsl:value-of select="number($currentdate)"/> 
     <br></br>
        

        <!-- <xsl:call-template name="sum">
          <xsl:with-param name="node-set" select="$node-set[not(position() = 
1)]"/>
          <xsl:with-param name="sum" select="$sum + $width"/>
        </xsl:call-template>-->

         
         <xsl:param name="asum"/>
        
        <xsl:choose>
        <xsl:when test="number($MinFlowDate) >= number($currentdate) and 
number($MinFlowDate) &lt;= number($datebucket1)">
                 
      1)<xsl:value-of select="$amt"/>

        </xsl:when>
        <xsl:when test="number($MinFlowDate) >= number($datebucket1) and 
number($MinFlowDate) &lt;= number($datebucket2)">
           2)<xsl:value-of select="$amt"/>
        </xsl:when>
         <xsl:when test="number($MinFlowDate) >= number($datebucket2) and 
number($MinFlowDate) &lt;= number($datebucket3)">
           3)<xsl:value-of select="$amt"/>
        </xsl:when>
        <xsl:otherwise>           
        </xsl:otherwise>
      </xsl:choose> 
         <xsl:value-of select="$asum"/>







        <br/>
    </xsl:for-each> 

        

    </body> 
</html> 
</xsl:template> 
</xsl:stylesheet> 

 


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>
  • newbie xsl questions - grouping date ranges with associated sums, dmitrik <=