XSLT 1.0 - 需要将<xsl:value-of select =“$ firstBlogPost / @ PostDate”>转换为月日,年份格式</xsl:value-of>

时间:2014-03-28 13:49:59

标签: date xslt

我有一些博客的XML和XSLT代码,我需要转换它:

<xsl:value-of select="$firstBlogPost/@PostDate"/>

因此它以这种格式呈现:2014年3月28日

有人可以帮忙吗?我是XML / XSLT的新手。提前谢谢!

这是我的XML:

<Navigation Type="Children" Name="BlogNavigation" label="Blog Navigation">
<Page ID="x9532" URL="x9532.xml?Preview=true&Site=&IncludeAllPages=false&tfrm=4&PubTgt=4&Site=&UserAgent=" Schema="BlogPost" Locale="" Changed="20140327T20:03:24" CategoryIds="" Title="XXXXX" Abstract="XXXXX" bodycopy="XXXXX" Author="XXXXX" PostDate="2014-03-27" Name="XXXXX" />
</Navigation>

这是我的XSLT:

<xsl:template match="BlogHome">     
<xsl:variable name="firstBlogPost" select="//Navigation[@Name = 'BlogNavigation']/Page" />      
<xsl:value-of select="$firstBlogPost/@PostDate"/>
</xsl:template>

1 个答案:

答案 0 :(得分:1)

让我们假设它是你的来源:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Navigation Type="Children" Name="BlogNavigation" label="Blog Navigation">
    <Page PostDate="2014-03-27" />
</Navigation>

所以,你需要一个转换PostDate属性的模板,所以XSL可以是:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" />

    <xsl:template match="/Navigation/Page">

        <xsl:call-template name="format_date">
            <xsl:with-param name="date" select="@PostDate"/>
        </xsl:call-template>

    </xsl:template>

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

        <xsl:variable name="month" select="substring($date, 6, 2)"/>

        <xsl:choose>
            <xsl:when test="$month = '01'">January</xsl:when>
            <xsl:when test="$month = '02'">February</xsl:when>
            <xsl:when test="$month = '03'">March</xsl:when>
            <xsl:when test="$month = '04'">April</xsl:when>
            <xsl:when test="$month = '05'">May</xsl:when>
            <xsl:when test="$month = '06'">June</xsl:when>
            <xsl:when test="$month = '07'">July</xsl:when>
            <xsl:when test="$month = '08'">August</xsl:when>
            <xsl:when test="$month = '09'">September</xsl:when>
            <xsl:when test="$month = '10'">October</xsl:when>
            <xsl:when test="$month = '11'">November</xsl:when>
            <xsl:when test="$month = '12'">December</xsl:when>
        </xsl:choose>

        <xsl:text> <xsl:value-of select="substring($date, 9, 2)"/></xsl:text>
        <xsl:text>, <xsl:value-of select="substring($date, 1, 4)"/></xsl:text>

    </xsl:template>
</xsl:stylesheet>

然后你将获得:

March 27, 2014

我希望它可以帮到你。