XSLT template

M

Mark

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
 
M

Martin Honnen

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.
 
M

Mark

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
 
M

Mark

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

A. Bolmarcich

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>
 
M

Mark

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

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top