如何在xslt中将2009-09-18转换为9月18日

Won*_*ing -1 xml xslt

想知道如何将2009-09-18转换为xslt的9月18日?谢谢.

And*_*ndy 5

这是一个纯XSLT 1.0解决方案,它假定有效输入:

<xsl:template match="/">
    <newdate>
        <xsl:call-template name="convertdate">
            <xsl:with-param name="date" select="date"/>
        </xsl:call-template>
    </newdate>
</xsl:template>

<xsl:template name="convertdate">   
    <xsl:param name="date"/>

    <xsl:variable name="day">
        <xsl:value-of select="number(substring-after(substring-after($date,'-'), '-'))"/>
    </xsl:variable>

    <xsl:variable name="suffix">
        <xsl:choose>
            <xsl:when test="$day = '1'">st</xsl:when>
            <xsl:when test="substring($day, string-length($day), 1) = '1' and not(starts-with($day, '1'))">st</xsl:when>
            <xsl:when test="substring($day, string-length($day), 1) = '2' and not(starts-with($day, '1'))">nd</xsl:when>
            <xsl:when test="substring($day, string-length($day), 1) = '3' and not(starts-with($day, '1'))">rd</xsl:when>
            <xsl:otherwise>th</xsl:otherwise>
        </xsl:choose>
    </xsl:variable>

    <xsl:variable name="mo">
        <xsl:value-of select="number(substring-before(substring-after($date,'-'), '-'))"/>
    </xsl:variable>     

    <xsl:variable name="month">
        <xsl:choose>
            <xsl:when test="$mo = 1">Jan</xsl:when>
            <xsl:when test="$mo = 2">Feb</xsl:when>
            <xsl:when test="$mo = 3">Mar</xsl:when>
            <xsl:when test="$mo = 4">Apr</xsl:when>
            <xsl:when test="$mo = 5">May</xsl:when>
            <xsl:when test="$mo = 6">Jun</xsl:when>
            <xsl:when test="$mo = 7">Jul</xsl:when>
            <xsl:when test="$mo = 8">Aug</xsl:when>
            <xsl:when test="$mo = 9">Sept</xsl:when>
            <xsl:when test="$mo = 10">Oct</xsl:when>
            <xsl:when test="$mo = 11">Nov</xsl:when>
            <xsl:when test="$mo = 12">Dec</xsl:when>
        </xsl:choose>
    </xsl:variable>

    <xsl:value-of select="$day"/><xsl:value-of select="$suffix"/>&#160;<xsl:value-of select="$month"/>

</xsl:template>
Run Code Online (Sandbox Code Playgroud)