Damn, I’ve been looking for this for a long time, but I couldn’t find a proper solution. So, what was the problem? Well, I wanted to create a page that gives an overview of several RSS-feeds I follow. The page should replicate some information of these feeds: just the title and the date of the last 5 posts. I wanted to give the date in the feed (i.e. ‘pubDate’) a nice Dutch look and feel, so the rather unreadable “Fri, 15 Sep 2006 13:57:48 +0000” would become “15 september 2006”. These RSS-feeds I parse with an XSLT-stylesheet using (Classic) ASP.
A date in a RSS-feed must be defined as RFC-822. However, I could not use the handy date-time functions for XSLT 2.0 to format this date, because these are not supported by MSXML4, the XML-parser my provider supplies. MSXML supports the ms:format-date function, but this function can handle only standard XSD date formats, which RFC-822 is not. (Bloody hell, I wanted to get back to client-side coding!)
The solution I took is the following: using VBScript in my stylesheet I parse the RFC-822 date as a string and build my Dutch date format with my own hands:
<?xml version='1.0' encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" xmlns:vbs="urn:schemas-sqlxml-org:vbs"> <msxsl:script language="VBScript" implements-prefix="vbs"> <![CDATA[ function formateDate(datum) dim arr, mnd, x, y, dag, jaar arr = Split("Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec", ",") mnd = Split("januari,februari,maart,april,mei,juni,juli,augustus,september,oktober,november,december", ",") For x = 0 To UBound(arr) If InStr(datum, arr(x)) Then y = InStr(datum, arr(x)) dag = Left(datum, y) jaar = Mid(datum, y, 8) formateDate = stripNr(dag) & " " & mnd(x) & " " & stripNr(jaar) exit function End If Next formateDate = "" end function function stripNr(nr) dim arr, str, x arr = Split(nr) for x = 0 to UBound(arr) if isNumeric(arr(x)) then str = str & arr(x) next stripNr = str end function ]]> </msxsl:script> [... some more code ...]
I’m not sure if this is a good approach, but luckily it works, and it’s good enough for me, because the page I wanted to create is just a start page for my mother with references to several baby blogs: greut.nl/startpagina.
Nonetheless I’m very pleased to get feedback on the code, if you have a better solution, please share it with me!