我从xslt获取xml中的日期,如下所示:
<DATE>20161211000000</DATE>
我想将此格式设置为2016年12月11日的有效日期格式。
那么可以在xslt中格式化日期吗?
请帮忙。
答案 0 :(得分:2)
你没有大小数,而是一个元素,其中一些值表示XSLT中不支持的格式的日期,因此你需要将其转换为XSLT 2.0 xs:date
值然后可以使用format-date
(https://www.w3.org/TR/xslt20/#date-time-examples)进行格式化:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
<xsl:template match="DATE">
<xsl:copy>
<xsl:value-of
select="
format-date(xs:date(
concat(substring(., 1, 4), '-', substring(., 5, 2), '-', substring(., 7, 2))), '[D01] [MN,*-3] [Y0001]')"
/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:1)
在XSLT 1.0中,您可以这样做:
<xsl:template match="DATE">
<xsl:copy>
<xsl:value-of select="substring(., 7, 2)" />
<xsl:text> </xsl:text>
<xsl:variable name="month" select="substring(., 5, 2)" />
<xsl:value-of select="substring('JanFebMarAprMayJunJulAugSepOctNovDec', 3 * ($month - 1) + 1, 3)"/>
<xsl:text> </xsl:text>
<xsl:value-of select="substring(., 1, 4)" />
</xsl:copy>
</xsl:template>