使用xslt将xml中包含日,月,年的内容转换为另一个xml到YYYYMMDD格式的日期

时间:2012-06-15 12:48:11

标签: xslt

我输入xml为

           <content>
             <date>
            <day>14</day>
               <month>06</month>
                <year>2012</year>
               </date>
            </content>

希望将其转换为

          <content>
               <date>2012-06-14T00:00:00</date>
           </content>

xslt使用

           <?xml version="1.0" encoding="utf-8"?>
            <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
             <xsl:output method="xml" indent="yes"/>

              <xsl:template match="content">
                 <content>
                   <xsl:apply-templates select="date"/>
                 </content>
              </xsl:template>

                 <xsl:template match="date">
                  <date>
                   <xsl:variable name="year" select="year"/>
                   <xsl:variable name="month" select="month"/>
                   <xsl:variable name="day" select="day"/>
               <xsl:value-of select="$year" />-<xsl:value-of select="$month"/>-
                 <xsl:value-of  select="$day"/>

                 </date>   
                </xsl:template>        

    </xsl:stylesheet>

我希望日期在YYYYMMDDTHH:MM:SS格式为例2012-06-15T02:52:37我怎样才能得到它。在xslt&#34; 1.0&#34;中的哪个函数pics字符串并采用格式模式。 aynone可以帮助我获得上述格式。

1 个答案:

答案 0 :(得分:1)

此转化

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="/*">
     <content>
       <xsl:apply-templates/>
     </content>
 </xsl:template>

 <xsl:template match="date">
  <date>
   <xsl:value-of select="concat(year, '-', month, '-', day, 'T00:00:00')"/>
  </date>
 </xsl:template>
</xsl:stylesheet>

应用于提供的XML文档

<content>
    <date>
        <day>14</day>
        <month>06</month>
        <year>2012</year>
    </date>
</content>

生成想要的正确结果

<content>
   <date>2012-06-14T00:00:00</date>
</content>