Formater VIA’s XmlDate til Valid RSS dato

Formater VIA’s XmlDate til Valid RSS dato

05/07/2010 | skrevet af: Nicky Christensen | Synkron VIA

Jeg sad og skulle lave et RSS feed fra VIA, hvor jeg så fandt ud af at den XmlDate SynkronVIA spytter ud i XML’en ikke er en valid RSS dato.
Derfor måtte jeg jo så igang med at lave noget XSLT til at lave den korrekt, så mit feed kunne komme til at validere.

Den XML dato, VIA spytter ud i XML’en, ser sådan ud:

2008-07-18T13:22:45.387Z

For at konvertere datoen til valid RSS format, så kan du se på mit eksempel her:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="<a href="http://www.w3.org/1999/XSL/Transform"> http://www.w3.org/1999/XSL/Transform</a>" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl ">
<xsl:output method="html" indent="yes"/>
<xsl:template match="Page">
<h1>Via datetime to RSS datetime</h1>
<h2>Example Via datetime:</h2>
<pre>
<xsl:text disable-output-escaping="no"><![CDATA[
<Date UtcYear="2008" UtcMonth="7" UtcDay="18" UtcHour="13" UtcMinute="22" UtcSecond="45" UtcMillisecond="387" Region="da-DK" TimeZone="RomanceStandardTime" UtcOffset="60">
<Day>fredag</Day>
<AbbreviatedDay>fr</AbbreviatedDay>
<Month>juli</Month>
<AbbreviatedMonth>jul</AbbreviatedMonth>
<XmlDate>2008-07-18T13:22:45.387Z</XmlDate>
<LongDate>18. juli 2008</LongDate>
<ShortDate>18-07-2008</ShortDate>
<ShortTime>15:22</ShortTime>
<LongTime>15:22:45</LongTime>
<LongDateLongTime>18. juli 2008 15:22:45</LongDateLongTime>
<ShortDateLongTime>18-07-2008 15:22:45</ShortDateLongTime>
<ShortDateShortTime>18-07-2008 15:22</ShortDateShortTime>
</Date>
]]></xsl:text>
</pre>
<h2>Example RSS datetime:</h2>
<pre>
<xsl:text disable-output-escaping="no"><![CDATA[<pubDate>Wed, 02 Oct 2002 08:00:00 EST</pubDate>]]></xsl:text>
</pre>
<xsl:call-template name="getRSSDateTimeFromViaDateTime">
<xsl:with-param name="viaDateTime" select="Date"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="getRSSDateTimeFromViaDateTime">
<xsl:param name="viaDateTime"/>
<xsl:variable name="upper" select="'ABCDEFGHIJKLMNIPQRSTUVWXZYÆØÅ'"/>
<xsl:variable name="lower" select="'abcdefghijklmnipqrstuvwxzyæøå'"/>
<xsl:variable name="month">
<xsl:choose>
<xsl:when test="$viaDateTime/AbbreviatedMonth='okt'">Oct</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(translate(substring($viaDateTime/AbbreviatedMonth, 1, 1), $lower, $upper),substring($viaDateTime/AbbreviatedMonth, 2, 2))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="day">
<xsl:choose>
<xsl:when test="$viaDateTime/Day='mandag'">Mon</xsl:when>
<xsl:when test="$viaDateTime/Day='tirsdag'">Tue</xsl:when>
<xsl:when test="$viaDateTime/Day='onsdag'">Wed</xsl:when>
<xsl:when test="$viaDateTime/Day='torsdag'">Thu</xsl:when>
<xsl:when test="$viaDateTime/Day='fredag'">Fri</xsl:when>
<xsl:when test="$viaDateTime/Day='lørdag'">Sat</xsl:when>
<xsl:when test="$viaDateTime/Day='søndag'">Sun</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(substring($viaDateTime/Day, 1, 1), substring(translate($viaDateTime/Day, $upper, $lower), 2, 2))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<pre>
<xsl:value-of select="concat($day, ', ', <a href="mailto:$viaDateTime/@UtcDay">$viaDateTime/@UtcDay</a>, ' ', $month, ' ', <a href="mailto:$viaDateTime/@UtcYear">$viaDateTime/@UtcYear</a>, ' ', $viaDateTime/LongTime, ' UT')"/>
</pre>
</xsl:template>
</xsl:stylesheet>

Ingen kommentarer

Ingen kommentarer endnu.

RSS feed for kommentarer til dette indlæg. TrackBack URL

Smid en kommentar