2010-12-22 13:58:53 +00:00
|
|
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
|
|
|
|
|
|
<xsl:stylesheet version="1.0"
|
2013-05-13 22:06:50 +00:00
|
|
|
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
|
|
|
xmlns:str="http://exslt.org/strings"
|
|
|
|
extension-element-prefixes="str">
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2010-12-22 13:58:53 +00:00
|
|
|
<xsl:output method="text" encoding="UTF-8" indent="no" />
|
2013-01-18 00:45:24 +00:00
|
|
|
<xsl:strip-space elements="body"/>
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2010-12-22 13:58:53 +00:00
|
|
|
<!-- new line template -->
|
|
|
|
<xsl:template name="nl"><xsl:text> </xsl:text></xsl:template>
|
|
|
|
|
|
|
|
<!-- Show a single event -->
|
|
|
|
<xsl:template name="event">
|
|
|
|
|
|
|
|
<!-- Create variables -->
|
|
|
|
<xsl:variable name="start">
|
|
|
|
<xsl:value-of select="translate (@start, '-', '')" />
|
|
|
|
</xsl:variable>
|
2016-12-05 08:08:24 +00:00
|
|
|
|
2010-12-22 13:58:53 +00:00
|
|
|
<xsl:variable name="end">
|
2016-12-05 08:08:24 +00:00
|
|
|
<xsl:value-of select="translate (@end, '-', '')" />
|
2010-12-22 13:58:53 +00:00
|
|
|
</xsl:variable>
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2010-12-22 13:58:53 +00:00
|
|
|
<xsl:variable name="link">
|
|
|
|
<xsl:value-of select="link" />
|
|
|
|
</xsl:variable>
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2010-12-22 13:58:53 +00:00
|
|
|
<xsl:variable name="page">
|
|
|
|
<xsl:value-of select="page" />
|
|
|
|
</xsl:variable>
|
|
|
|
|
|
|
|
<!-- Now, the event block -->
|
2013-01-18 01:00:24 +00:00
|
|
|
<xsl:text>BEGIN:VEVENT</xsl:text><xsl:call-template name="nl" />
|
2010-12-22 13:58:53 +00:00
|
|
|
|
2013-05-13 22:06:50 +00:00
|
|
|
<xsl:text>SUMMARY:</xsl:text>
|
|
|
|
<xsl:call-template name="ical-escape">
|
|
|
|
<xsl:with-param name="text" select="title" />
|
|
|
|
</xsl:call-template>
|
|
|
|
<xsl:call-template name="nl" />
|
2010-12-22 13:58:53 +00:00
|
|
|
|
2013-01-18 01:00:24 +00:00
|
|
|
<xsl:text>DTSTART;VALUE=DATE:</xsl:text><xsl:value-of select="$start" /><xsl:call-template name="nl" />
|
2016-12-05 08:08:24 +00:00
|
|
|
<xsl:if test="not($start = $end)">
|
|
|
|
<xsl:text>DTEND;VALUE=DATE:</xsl:text><xsl:value-of select="$end" /><xsl:call-template name="nl" />
|
|
|
|
</xsl:if>
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2013-05-13 21:41:43 +00:00
|
|
|
<xsl:text>URL:</xsl:text>
|
|
|
|
<xsl:choose>
|
|
|
|
<xsl:when test="$page != ''"><xsl:value-of select="$page" /></xsl:when>
|
|
|
|
<xsl:otherwise>http://fsfe.org/events/events.<xsl:value-of select="/buildinfo/@language" />.html</xsl:otherwise>
|
|
|
|
</xsl:choose>
|
|
|
|
<xsl:call-template name="nl" />
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2013-05-13 22:06:50 +00:00
|
|
|
<xsl:text>DESCRIPTION:</xsl:text>
|
|
|
|
<xsl:call-template name="ical-escape">
|
|
|
|
<xsl:with-param name="text" select="normalize-space(body/node())" />
|
|
|
|
</xsl:call-template>
|
|
|
|
<xsl:call-template name="nl" />
|
2010-12-22 13:58:53 +00:00
|
|
|
|
2013-01-18 01:00:24 +00:00
|
|
|
<xsl:text>END:VEVENT</xsl:text><xsl:call-template name="nl" />
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2010-12-22 13:58:53 +00:00
|
|
|
</xsl:template>
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2013-01-18 01:23:45 +00:00
|
|
|
<xsl:template match="/">
|
2013-01-18 01:07:27 +00:00
|
|
|
<xsl:apply-templates select="/buildinfo/document" />
|
2013-01-18 00:45:24 +00:00
|
|
|
</xsl:template>
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2013-01-18 01:07:27 +00:00
|
|
|
<xsl:template match="/buildinfo/document">
|
2020-04-27 16:08:34 +02:00
|
|
|
<xsl:text>BEGIN:VCALENDAR</xsl:text><xsl:call-template name="nl" />
|
|
|
|
<xsl:text>VERSION:2.0</xsl:text><xsl:call-template name="nl" />
|
|
|
|
<xsl:text>PRODID:fsfe.org/events/events.ics.xsl</xsl:text><xsl:call-template name="nl" />
|
2010-12-22 13:58:53 +00:00
|
|
|
<!-- Future events -->
|
2020-04-27 13:00:44 +02:00
|
|
|
<xsl:for-each select="/buildinfo/document/set/event[
|
|
|
|
translate(@start, '-', '') >= translate(/buildinfo/@date, '-', '')
|
|
|
|
]">
|
2010-12-22 13:58:53 +00:00
|
|
|
<xsl:sort select="@start" order="descending" />
|
2020-04-27 16:08:34 +02:00
|
|
|
<xsl:call-template name="event"/>
|
2010-12-22 13:58:53 +00:00
|
|
|
</xsl:for-each>
|
2020-04-27 16:08:34 +02:00
|
|
|
<xsl:text>END:VCALENDAR</xsl:text>
|
2010-12-22 13:58:53 +00:00
|
|
|
</xsl:template>
|
2020-04-27 21:53:42 +02:00
|
|
|
|
|
|
|
|
2013-05-13 22:06:50 +00:00
|
|
|
<xsl:template name="ical-escape">
|
|
|
|
<xsl:param name="text" />
|
2020-04-27 21:53:42 +02:00
|
|
|
|
2019-05-30 17:00:36 +02:00
|
|
|
<!-- characters to be backslashed: \;, -->
|
2013-05-13 22:06:50 +00:00
|
|
|
<xsl:value-of select="str:replace(str:replace(str:replace($text,'\','\\'),',','\,'),';','\;')" />
|
|
|
|
</xsl:template>
|
2010-12-22 13:58:53 +00:00
|
|
|
|
|
|
|
</xsl:stylesheet>
|
|
|
|
|