|
next
|
Subject: XSL Date formatting Author: John Hayes Date: 01 Nov 2007 11:46 AM
|
Hi All
Can anyone help me with this please?
I have a date in an XML tag like this <InvoiceDate>2007-10-31</InvoiceDate> and I need to render this in HTML in a standard european way either 31-10-2007 or better 31 Oct 2007.
I have tried this template but get only "--" rendered.
<xsl:template match="a:InvoiceDate">
<xsl:variable name="date" select="a:InvoiceDate"/>
<xsl:value-of select="concat(substring-after(substring-after($date,'-'),'-'), '-',
substring('JanFebMarAprMayJunJulAugSebOctNovDec',
substring-before(substring-after($date,'-'),'-')*3-2,3), '-',
substring-before($date,'-'))"/>
</xsl:template>
Any and all ideas appreciated.
John
|
next
|
Subject: XSL Date formatting Author: James Durning Date: 01 Nov 2007 12:02 PM
|
Your problem is here:
<xsl:variable name="date" select="a:InvoiceDate"/>
You're already in the a:InvoiceDate node, so this looks for a nested InvoiceDate child! Common mistake. You'd want:
<xsl:variable name="date" select="."/>
but even this is unnecessary.
Also, I'd put the string in a seperate variable:
<xsl:variable name="months" select="'JanFebMarAprMayJunJulAugSepOctNovDec'"/>
Generally, I'd also use substring, instead of substring-after , but this only works if your dates come in 01 format.
year: substring(.,1,4)
month: substring(.,6,2)
day: substring(.,9,2)
Final:
<xsl:value-of select="concat(substring(.,9,2), ' ', substring($months,(substring(.,6,2)*3)-2,3),' ', substring(.,1,4)"/>
|
|
|
|