RE: [xsl] Problem with Age Calculation

Subject: RE: [xsl] Problem with Age Calculation
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Sat, 10 May 2008 22:48:47 +0100
I think the problem is your use of "idiv" which does an integer division
(that is, the result is an integer number of years). Replace this by "div"
and your answer will then be to the nearest month.

Also note, you can now use the prefix xs where you use xdt - types like
dayTimeDuration and yearMonthDuration were moved into the XML Schema
namespace in the final draft of the spec.

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

> -----Original Message-----
> From: ilango [mailto:ilangocal@xxxxxxxxx] 
> Sent: 07 May 2008 03:26
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Problem with Age Calculation
> 
> Hi
> I am using Saxon 9.0.0.4 with XSLT 2.0 and XPATH 2.0. This is 
> my first post.
> I am using the following XPATH expression in an XForm. This 
> is not an XForm question.It is about the XPath in the XForm.
> 
> <xforms:bind nodeset="instance('taskoutput')/fe:age" 
> type="xs:integer" 
> calculate="if((instance('taskoutput')/fe:dob) castable as 
> xs:date) then (current-date() - 
> xs:date(instance('taskoutput')/fe:dob)) div xdt:dayTimeDuration('P1D')
> 								
> idiv 365.242199 
> 						* 
> xdt:yearMonthDuration('P1Y') else()"/>
> 
> I am not familiar with XPath date functions and I am finding 
> it hard to get the age from this expression.
> It returns me something P33Y or something for a certain input DOB.
> 
> What can I do to get the age of a person in years and months. 
> I am ok with  not having to account for leap years or small 
> problems at the boundaries.
> 
> All help is appreciated.
> 
> thanks
> ilango
> 
> 
> 
> 
>       
> ______________________________________________________________
> ______________________
> Be a better friend, newshound, and
> know-it-all with Yahoo! Mobile.  Try it now.  
> http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ

Current Thread