2014-03-28 56 views
0

我有一些博客的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

让我们假设它是你的源:

<?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 

我希望它可以帮助你。

+0

嗨里卡多!我必须做一些调整才能在我的XSLT中运行,但它非常完美!非常感谢你的回复! – user3472810

+0

我很高兴为您服务!问候! –

相关问题