我有一个XML数据文件,其中包含此格式为10/25/2015的短日期。
我们希望日期以长格式显示,例如10月25日,星期日
XSLT有可能吗?
以下是一些示例数据:
<?xml version="1.0" encoding="UTF-8"?>
<Guide>
<SessionDay><startDate>10/24/2015</startDate>
<sessions>
<Session_Title>Leadership Development</Session_Title>
</sessions>
</SessionDay>
<SessionDay><startDate>10/25/2015</startDate>
<sessions>
<Session_Title>Teambuilding and Teamwork</Session_Title>
</sessions>
</SessionDay>
</Guide>
可能,但不容易:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="startDate">
<xsl:copy>
<xsl:call-template name="format-date"/>
</xsl:copy>
</xsl:template>
<xsl:template name="format-date">
<!-- extract date parameters -->
<xsl:variable name="month" select="substring-before(., '/')"/>
<xsl:variable name="day" select="substring-before(substring-after(., '/'), '/')"/>
<xsl:variable name="year" select="substring-after(substring-after(., '/'), '/')"/>
<!-- month name -->
<xsl:variable name="month-name">
<xsl:choose>
<xsl:when test="$month=1">January</xsl:when>
<xsl:when test="$month=2">February</xsl:when>
<xsl:when test="$month=3">March</xsl:when>
<xsl:when test="$month=4">April</xsl:when>
<xsl:when test="$month=5">May</xsl:when>
<xsl:when test="$month=6">June</xsl:when>
<xsl:when test="$month=7">July</xsl:when>
<xsl:when test="$month=8">August</xsl:when>
<xsl:when test="$month=9">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:variable>
<!-- day of week -->
<xsl:variable name="JDN">
<xsl:call-template name="JDN">
<xsl:with-param name="year" select="$year" />
<xsl:with-param name="month" select="$month" />
<xsl:with-param name="day" select="$day" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="dayOfweek" select="($JDN + 1) mod 7"/>
<xsl:variable name="day-name">
<xsl:choose>
<xsl:when test="$dayOfweek=0">Sunday</xsl:when>
<xsl:when test="$dayOfweek=1">Monday</xsl:when>
<xsl:when test="$dayOfweek=2">Tuesday</xsl:when>
<xsl:when test="$dayOfweek=3">Wednesday</xsl:when>
<xsl:when test="$dayOfweek=4">Thursday</xsl:when>
<xsl:when test="$dayOfweek=5">Friday</xsl:when>
<xsl:when test="$dayOfweek=6">Saturday</xsl:when>
</xsl:choose>
</xsl:variable>
<!-- output -->
<xsl:value-of select="concat($day-name, ', ', $month-name, ' ', $day)"/>
</xsl:template>
<xsl:template name="JDN">
<xsl:param name="year"/>
<xsl:param name="month"/>
<xsl:param name="day"/>
<xsl:variable name="a" select="floor((14 - $month) div 12)"/>
<xsl:variable name="y" select="$year + 4800 - $a"/>
<xsl:variable name="m" select="$month + 12*$a - 3"/>
<xsl:value-of select="$day + floor((153*$m + 2) div 5) + 365*$y + floor($y div 4) - floor($y div 100) + floor($y div 400) - 32045" />
</xsl:template>
</xsl:stylesheet>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句