是否可以在xslt中格式化一个大小数到日期

时间:2016-12-14 08:10:27

标签: java xml date xslt

我从xslt获取xml中的日期,如下所示:

<DATE>20161211000000</DATE>

我想将此格式设置为2016年12月11日的有效日期格式。

那么可以在xslt中格式化日期吗?

请帮忙。

2 个答案:

答案 0 :(得分:2)

你没有大小数,而是一个元素,其中一些值表示XSLT中不支持的格式的日期,因此你需要将其转换为XSLT 2.0 xs:date值然后可以使用format-datehttps://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>