This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: String manipulation question
- From: Jarno dot Elovirta at nokia dot com
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Fri, 19 Jul 2002 15:54:21 +0300
- Subject: RE: [xsl] String manipulation question
- Reply-to: xsl-list at lists dot mulberrytech dot com
Hi,
> My question is regarding some string manipulation.
> I have template which looks at a string value of a date
> (eg 02-03-02 param1) and a dateformat (eg. DD-MM-YY param2).
>
> My template has to (for e.g.):
> return 02-03-02
> if param1= 2-3-02
> and param2= DD-MM-YY
>
> or
> return 02/03/2002
> if param1= 02/3/02
> and param2= DD-MM-YYYY
>
>
> I'm having difficulties in thinking of a short and neat way
> of appending '0'
> in front of any number between 1-9 (if its not already there).
> [And appending a '20' for a year format (if its not already there)].
> Any help appreciated.
It's friday, so...
<xsl:template name="dateFormat">
<xsl:param name="str" />
<xsl:param name="date-format" />
<xsl:choose>
<xsl:when test="contains($str, '-')">
<xsl:value-of select="concat(format-number(substring-before($str, '-'), substring(substring('2000', 4 - string-length(substring-before($date-format, '-'))), 1, string-length(substring-before($date-format, '-')))), '-')"/>
<xsl:call-template name="dateFormat">
<xsl:with-param name="str" select="substring-after($str, '-')" />
<xsl:with-param name="date-format" select="substring-after($date-format, '-')" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="format-number($str, substring(substring('2000', 4 - string-length($date-format)), 1, string-length($date-format)))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
I'll also format YYYY-MM-DD.
Cheers,
Santtu
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list