XSLT template

Mark (50)

Usenet Archive
Joined
Mar 29, 2004
Messages
9
Reaction score
0
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
 

Martin Honnen

Usenet Archive
Joined
Apr 8, 2000
Messages
6,174
Reaction score
0
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.
 

Mark (50)

Usenet Archive
Joined
Mar 29, 2004
Messages
9
Reaction score
0
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
 

Mark (50)

Usenet Archive
Joined
Mar 29, 2004
Messages
9
Reaction score
0
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
 

A. Bolmarcich

Usenet Archive
Joined
May 9, 2002
Messages
219
Reaction score
0
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>
 

Mark (50)

Usenet Archive
Joined
Mar 29, 2004
Messages
9
Reaction score
0
The match is made said:
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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
548,208
Messages
3,104,799
Members
249,594
Latest member
henrywalsh

Latest Threads

Top