If internationalization is not important to your application, then the following simple code will do:
<xsl:template name="date:get-day-of-the-week-name"> <xsl:param name="day-of-the-week"/> <xsl:choose> <xsl:when test="$day-of-the-week = 0">Sunday</xsl:when> <xsl:when test="$day-of-the-week = 1">Monday</xsl:when> <xsl:when test="$day-of-the-week = 2">Tuesday</xsl:when> <xsl:when test="$day-of-the-week = 3">Wednesday</xsl:when> <xsl:when test="$day-of-the-week = 4">Thursday</xsl:when> <xsl:when test="$day-of-the-week = 5">Friday</xsl:when> <xsl:when test="$day-of-the-week = 6">Saturday</xsl:when> <xsl:otherwise> error: <xsl:value-of select="$day-of-the-week"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="date:get-day-of-the-week-abbreviation"> <xsl:param name="day-of-the-week"/> <xsl:choose> <xsl:when test="$day-of-the-week = 0">Sun</xsl:when> <xsl:when test="$day-of-the-week = 1">Mon</xsl:when> <xsl:when test="$day-of-the-week = 2">Tue</xsl:when> <xsl:when test="$day-of-the-week = 3">Wed</xsl:when> <xsl:when test="$day-of-the-week = 4">Thu</xsl:when> <xsl:when test="$day-of-the-week = 5">Fri</xsl:when> <xsl:when test="$day-of-the-week = 6">Sat</xsl:when> <xsl:otherwise> error: <xsl:value-of select="$day-of-the-week"/> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="date:get-month-name"> <xsl:param name="month"/> <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:otherwise>error: <xsl:value-of select="$month"/></xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="date:get-month-abbreviation"> <xsl:param name="month"/> <xsl:choose> <xsl:when test="$month = 1">Jan</xsl:when> <xsl:when test="$month = 2">Feb</xsl:when> <xsl:when test="$month = 3">Mar</xsl:when> <xsl:when test="$month = 4">Apr</xsl:when> <xsl:when test="$month = 5">May</xsl:when> <xsl:when test="$month = 6">Jun</xsl:when> <xsl:when test="$month = 7">Jul</xsl:when> <xsl:when test="$month = 8">Aug</xsl:when> <xsl:when test="$month = 9">Sep</xsl:when> <xsl:when test="$month = 10">Oct</xsl:when> <xsl:when test="$month = 11">Nov</xsl:when> <xsl:when test="$month = 12">Dec</xsl:when> <xsl:otherwise>error: <xsl:value-of select="$month"/></xsl:otherwise> </xsl:choose> </xsl:template>
These templates are just fine if your application will never be used outside of the English-speaking world. However, you might consider using a table-driven approach for added portability:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://www.ora.com/XSLTCookbook/NS/dates"> <!-- United States : us --> <date:month country="us" m="1" name="January" abbrev="Jan" /> <date:month country="us" m="2" name="February" abbrev="Feb"/> <date:month country="us" m="3" name="March" abbrev="Mar"/> <date:month country="us" m="4" name="April" abbrev="Apr"/> <date:month country="us" m="5" name="May" abbrev="May"/> <date:month country="us" m="6" name="June" abbrev="Jun"/> <date:month country="us" m="7" name="July" abbrev="Jul"/> <date:month country="us" m="8" name="August" abbrev="Aug"/> <date:month country="us" m="9" name="September" abbrev="Sep"/> <date:month country="us" m="10" name="October" abbrev="Oct"/> <date:month country="us" m="11" name="November" abbrev="Nov"/> <date:month country="us" m="12" name="December" abbrev="Dec"/> <!-- Germany : de --> <date:month country="de" m="1" name="Januar" abbrev="Jan"/> <date:month country="de" m="2"name=";Februar" abbrev="Feb"/> <date:month country="de" m="3" name="März" abbrev="Mär"/> <date:month country="de" m="4" name="April" abbrev="Apr"/> <date:month country="de" m="5" name="Mai" abbrev="Mai"/> <date:month country="de" m="6" name="Juni" abbrev="Jun"/> <date:month country="de" m="7" name="Juli" abbrev="Jul"/> <date:month country="de" m="8" name="August" abbrev="Aug"/> <date:month country="de" m="9" name="September" abbrev="Sep"/> <date:month country="de" m="10" name="Oktober" abbrev="Okt"/> <date:month country="de" m="11" name="November" abbrev="Nov"/> <date:month country="de" m="12" name="Dezember" abbrev="Dez"/> <!-- You get the idea ... --> <!-- Store element in variable for easy access --> <xsl:variable name="date:months" select="document('')/*/date:month"/> </xsl:stylesheet> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://www.ora.com/XSLTCookbook/dates"> <xsl:include href="date-conversion.xsl"/> <xsl:template name="date:get-month-name"> <xsl:param name="month"/> <xsl:param name="country" select=" 'us' "/> <xsl:value-of select="$date:months[@country=$country and @m=$month]/@name"/> </xsl:template>