c3d2-web/xsl/rss.xsl

68 lines
2.6 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
exclude-result-prefixes="xsl date">
<xsl:output method="xml"
version="1.0"
encoding="utf-8"
indent="yes"/>
<xsl:variable name="baseurl">https://www.c3d2.de/</xsl:variable>
<xsl:template match="news">
<xsl:element name="rss">
<xsl:attribute name="version">2.0</xsl:attribute>
<xsl:attribute name="xml:lang">de</xsl:attribute>
<channel>
<title>www.c3d2.de Newsfeed</title>
<link>https://www.c3d2.de/</link>
<description>Neues aus dem Chaos Computer Club Dresden</description>
<language>de-de</language>
<!-- TODO: Insert "now": <pubDate><xsl:value-of select="news/item/@date"/></pubDate> -->
<xsl:for-each select="newsfile">
<xsl:sort select="date:seconds(document(.)/item/@date)" data-type="number" order="descending" />
<xsl:apply-templates select="document(.)/item">
<xsl:with-param name="newsfile" select="."/>
</xsl:apply-templates>
</xsl:for-each>
</channel>
</xsl:element>
</xsl:template>
<xsl:template match="item">
<xsl:param name="newsfile"/>
<item>
<title><xsl:value-of select="@title"/></title>
<link><xsl:value-of select="$baseurl"/><xsl:value-of select="substring-before(substring-after($newsfile, 'content/'), '.xml')"/>.html</link>
<description><xsl:apply-templates mode="escaped"/></description>
<author><xsl:value-of select="@author"/></author>
<category><xsl:value-of select="@category"/></category>
<pubDate><xsl:value-of select="@date"/></pubDate>
</item>
</xsl:template>
<xsl:template match="pre" mode="escaped">
&lt;pre&gt;<xsl:apply-templates mode="escaped"/>&lt;/pre&gt;
</xsl:template>
<xsl:template match="p" mode="escaped">
&lt;p&gt;<xsl:apply-templates mode="escaped"/>&lt;/p&gt;
</xsl:template>
<xsl:template match="image" mode="escaped">
&lt;img src="<xsl:value-of select="."/>"<xsl:if test="@title"> title="<xsl:value-of select="@title"/>" alt="<xsl:value-of select="@title"/>"</xsl:if><xsl:if test="@class"> class="<xsl:value-of select="@class"/>"</xsl:if>/&gt;
</xsl:template>
<xsl:template match="link" mode="escaped">
&lt;a <xsl:choose>
<xsl:when test="@href">href="<xsl:value-of select="@href"/>"</xsl:when>
<xsl:otherwise>href="<xsl:value-of select="."/>"</xsl:otherwise>
</xsl:choose>&gt;<xsl:apply-templates mode="escaped"/>&lt;/a&gt;
</xsl:template>
</xsl:stylesheet>