468,765 Members | 1,067 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,765 developers. It's quick & easy.

XSLT template

Hello,

I'm having problems with an XSLT template I'm developing.

I have a date in an odd format which I'm trying to convert into something
more readable. The original date is in the format YYYY-MM-DD, and I'd like
to convert it to DD MON YY.

I pass the date into my template thusly in my XSLT stylesheet (date-updated
is the data I'm passing in):

<xsl:call-template name="formatDate">
<xsl:with-param name="string" select="date-updated" />
</xsl:call-template>

.... and the template is thus:

<xsl:template name="formatDate">
<xsl:param name="inDate" />
<!-- Day -->
<xsl:variable name="day" select="number(substring($inDate, 9, 2))" />
<!-- Month -->
<xsl:variable name="month" select="number(substring($inDate, 6, 2))" />
<xsl:variable name="converted-month">
<xsl:choose>
<xsl:when test="$month=format-number('01', '00')">
<xsl:value-of select="Jan" />
</xsl:when>
....
<xsl:when test="$month='12'">
<xsl:value-of select="Dec" />
</xsl:when>
</xsl:choose>
</xsl:variable>
<!-- Year -->
<xsl:variable name="year" select="number(substring($inDate, 3, 2))" />
<!-- Formatted Date -->
<xsl:value-of select="concat($inDate, ': ', format-number($day, '00'), '
', $converted-month, ' ', format-number($year, '00'))" />
</xsl:template>

The output I get is:

: NaN NaN

NaN = Not a number, of course, but I can't see why such an error should be
raised.

Thanks for any assistance,

Mark
Jul 20 '05 #1
6 2747


Mark wrote:

<xsl:call-template name="formatDate">
<xsl:with-param name="string" select="date-updated" />
</xsl:call-template>

... and the template is thus:

<xsl:template name="formatDate">
<xsl:param name="inDate" />


I think you need
<xsl:param name="string" />
here or
<xsl:with-param name="inDate" select="date-updated" />
above, the name of the parameter needs to be the same in xsl:with-param
and xsl:param.
--

Martin Honnen
http://JavaScript.FAQTs.com/

Jul 20 '05 #2
> I think you need
<xsl:param name="string" />
here or
<xsl:with-param name="inDate" select="date-updated" />
above, the name of the parameter needs to be the same in xsl:with-param
and xsl:param.


Yes, you're right - thanks.

Mark
Jul 20 '05 #3
> Yes, you're right - thanks.

Another problem - the month comes in as a 2 digit number (e.g. 01 for Jan).

How can I convert it to the text "Jan"?

I've tried the following:

<xsl:variable name="month" select="number(substring($inDate, 6, 2))"/>
<xsl:variable name="converted-month">
<xsl:choose>
<xsl:when test="$month='1'">
<xsl:value-of select="Jan"/>
</xsl:when>
....
</xsl:choose>
</xsl:variable>

.... but the match is never made: it always produces no output.

I've tried outputting $month, and that produces the correct month number
(e.g. "1", rather than "01"), so the correct data is going in. I just can't
seem to get the comparison right.

Thanks for any information,

Mark
Jul 20 '05 #4
In article <40***********************@news.easynet.co.uk>, Mark wrote:
Another problem - the month comes in as a 2 digit number (e.g. 01 for Jan).

How can I convert it to the text "Jan"?

I've tried the following:

<xsl:variable name="month" select="number(substring($inDate, 6, 2))"/>
<xsl:variable name="converted-month">
<xsl:choose>
<xsl:when test="$month='1'">
<xsl:value-of select="Jan"/>
</xsl:when>
...
</xsl:choose>
</xsl:variable>

... but the match is never made: it always produces no output.


The match is made, but <xsl:value-of select="Jan"/> is the value of the
element named "Jan". Because there is no element named "Jan", the value
is empty. If you want the value to be a string use

<xsl:value-of select="'Jan'"/>

If you want the value to be a text node use

<xsl:text>Jan</xsl:text>
Jul 20 '05 #5
> The match is made, but <xsl:value-of select="Jan"/> is the value of the
element named "Jan". Because there is no element named "Jan", the value
is empty. If you want the value to be a string use

<xsl:value-of select="'Jan'"/>

If you want the value to be a text node use

<xsl:text>Jan</xsl:text>


Great - thank you very much.

Mark
Jul 20 '05 #6
Mark <ma****************@ukonline.co.uk.nospam> wrote:
I have a date in an odd format which I'm trying to convert into
something more readable. The original date is in the format
YYYY-MM-DD, and I'd like to convert it to DD MON YY.


As an aside, what's so "odd" about the ISO (8601) date format?

http://www.hermetic.ch/cal_stud/formats.htm

--
_Deirdre web: http://deirdre.net blog: http://deirdre.org/blog/
"Memes are a hoax! Pass it on!"
Jul 20 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

reply views Thread by Sergio del Amo | last post: by
2 posts views Thread by ted | last post: by
8 posts views Thread by Maciej Wegorkiewicz | last post: by
7 posts views Thread by Harolds | last post: by
2 posts views Thread by Michael Hamm | last post: by
8 posts views Thread by Hercules Dev. | last post: by
1 post views Thread by Sandeep Singh | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.