Re: [xsl] Date Formating

Subject: Re: [xsl] Date Formating
From: "Perry Molendijk" <perry@xxxxxxxxxxxxxx>
Date: Sun, 12 Jan 2003 23:27:11 +0800
I have used this on numerous occassions, perhaps not the most elegant
solution but it works:

create a file (calendar.xml) with xml that looks something like this:

<calendar>
 <days-in-week>
  <day number="1" short="Sun" long="Sunday"/>
  <day number="2" short="Mon" long="Monday"/>
  <day number="3" short="Tue" long="Tuesday"/>
  <day number="4" short="Wed" long="Wednesday"/>
  <day number="5" short="Thu" long="Thursday"/>
  <day number="6" short="Fri" long="Friday"/>
  <day number="7" short="Sat" long="Saturday"/>
 </days-in-week>
 <months-of-year>
  <month number="01" short="Jan" long="January"/>
  <month number="02" short="Feb" long="February"/>
  <month number="03" short="Mar" long="March"/>
  <month number="04" short="Apr" long="April"/>
  <month number="05" short="May" long="May"/>
  <month number="06" short="Jun" long="June"/>
  <month number="07" short="Jul" long="July"/>
  <month number="08" short="Aug" long="August"/>
  <month number="09" short="Sep" long="September"/>
  <month number="10" short="Oct" long="October"/>
  <month number="11" short="Nov" long="November"/>
  <month number="12" short="Dec" long="December"/>
 </months-of-year>
</calendar>

in your XSL at create a parameter that holds this document:

<xsl:param name="calendarReference" select="document('calendar.xml')"/>

<xsl:template match="date-created">
 <xsl:call-template name="date-writer">
  <xsl:with-param name="thisDate" select="."/>
 </xsl:template>
</xsl:template>

and a named template like this:

<xsl:template match="date-writer">
 <xsl:param name="thisDate"/>
 <xsl:variable name="day" select="substring($thisDate,9,2)"/>
 <xsl:variable name="month"
select="normalize-space(substring($thisDate,6,2))"/>
 <xsl:variable name="year" select="substring($thisDate,1,4)"/>
 <xsl:value-of select="$day"/>
 <xsl:text> </xsl:text>
 <xsl:value-of
select="$calendarReference/calendar/months-of-year/month[@number=$month]/@sh
ort"/>
 <xsl:text>, </xsl:text>
 <xsl:value-of select="$year"/>
</xsl:template>

off course this template only works with YYYY-MM-DD format but it is easily
adapted to any other format. Its biggest down fall is when you need the name
of the day.

EXSLT has a lot of date-time functions you could use. (www.exslt.org)

Perry Molendijk




----- Original Message -----
From: "Arthur" <ArthurMaloney@xxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Friday, December 12, 2003 9:09 PM
Subject: [xsl] Date Formating


> Hello xsl-list,
>
>   I'm transforming an xml file that gives me a nicely formatted report
>   (html 80 odd pages).
>   Part of the transform uses format-number() for decimal places etc.
>
>   one of the elements in the xml, is a date
>   <date-created>2003-01-12</date-created>
>
>   How do you transform this to 12-Jan-03 ?
>
>
> --
> Best regards,
>  Arthur                          mailto:ArthurMaloney@xxxxxxxxxx
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>

----- Original Message -----
From: "Arthur" <ArthurMaloney@xxxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Friday, December 12, 2003 9:09 PM
Subject: [xsl] Date Formating


> Hello xsl-list,
>
>   I'm transforming an xml file that gives me a nicely formatted report
>   (html 80 odd pages).
>   Part of the transform uses format-number() for decimal places etc.
>
>   one of the elements in the xml, is a date
>   <date-created>2003-01-12</date-created>
>
>   How do you transform this to 12-Jan-03 ?
>
>
> --
> Best regards,
>  Arthur                          mailto:ArthurMaloney@xxxxxxxxxx
>
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
>
>


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread