xsl-list
[Top] [All Lists]

RE: [xsl] How to implement date difference in XSLT 1.0

2009-09-29 12:42:57

Theres a library of date-handling functions and templates available at
www.exslt.org. Many of these are implemented in pure XSLT so they can be
used with any XSLT 1.0 processor.

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 
 

-----Original Message-----
From: abhilash k [mailto:abhilash_bmc(_at_)yahoo(_dot_)com] 
Sent: 29 September 2009 17:30
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] How to implement date difference in XSLT 1.0

Hi Guys...need your help in below explained XML to CSV transformation.

Input:
-------
<Result>
   <Timesheet>
    <ID>888001</ID>
    <Name>Abhi</Name>
    <Week_Ending_Date>9/1/09</Week_Ending_Date>
    <Dept>Test Department</Dept>
    <Hours_Basic_Saturday>5:00</Hours_Basic_Saturday>
    <Hours_Basic_Sunday>0:00</Hours_Basic_Sunday>
    <Hours_Basic_Monday>9:00</Hours_Basic_Monday>
    </Timesheet>
</Result>    
            
Desired Output:
-----------------
The CSV file should have multiple records depending on days worked and
--> Word date as a date value derived from 'Week_End_Date' 
which is always a friday date. i.e if Week_End_Date is 
02/10/2009, Work date for Monday should be derived by 
something like date(Week_End_Date) - 4.

Any idea how can i implement such date functions in XSLT 1.0 
to get the below given output.

ID,     Name, Week Ending, Dept,    Work Date, Reg Hours 
888001, Abhi, 2/10/09, Test Department,26/09/09 , 5:00 
888001, Abhi, 2/10/09, Test Department,28/09/09 , 9:00

Intermediate XSLT:
-----------------
I'm using this xslt which gives me the above output but don't 
have the date logic yet.

<xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
   version="1.0">
   <xsl:output method="text"/>
   <xsl:param name="sep" select="', '"/>
   <xsl:param name="lf" select="'
'"/>

   <xsl:template match="/">
        <xsl:value-of select="concat('ID', $sep, 'Name', 
$sep,'Week Ending', $sep, 'Dept', $sep,'Work Date',$sep,'Reg 
Hours', $lf)"/>
   <xsl:for-each select="Result/Timesheet">
   <xsl:if test="string(@Hours_Basic_Saturday) != '0.00'"> 
<xsl:value-of select="concat(ID, $sep, Name,$sep, 
Week_Ending_Date,$sep, Dept, $sep,'',  
$sep,Hours_Basic_Saturday,$lf)"/> </xsl:if>
        
   <xsl:if test="string(@Hours_Basic_Sunday) != '0.00'">
    <xsl:value-of select="concat(ID, $sep, Name,$sep, 
Week_Ending_Date,$sep, Dept, $sep,'',  
$sep,Hours_Basic_Saturday, $lf)"/> </xsl:if> </xsl:for-each>
   </xsl:template>
</xsl:stylesheet>

Many Thanks,
Abhilash



      Keep up with people you care about with Yahoo! India 
Mail. Learn how. http://in.overview.mail.yahoo.com/connectmore

--~------------------------------------------------------------------
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>
--~--



--~------------------------------------------------------------------
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>