2 Stylesheet to convert Dilbert daily strips to RSS.
4 Copyright (C) 2013-2018 Antonio Ospite <ao2@ao2.it>
6 This file is part of tweeper.
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
23 Since June 18, 2013 dilbert.com strips are not accessible anymore
24 directly from the RSS feed, this message is displayed instead:
26 Dilbert readers - Please visit Dilbert.com to read this feature. Due
27 to changes with our feeds, we are now making this RSS feed a link to
30 How unhandy is that, was it because of a management decision?
31 Maybe a parody dilbert strip is needed about this issue...
34 <xsl:stylesheet version="1.0"
35 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
36 xmlns:php="http://php.net/xsl"
37 exclude-result-prefixes="php">
39 <xsl:param name="generate-enclosure"/>
40 <xsl:param name="show-multimedia"/>
42 <xsl:output method="xml" indent="yes"/>
44 <xsl:variable name="BaseURL" select="//meta[@property='og:url']/@content"/>
46 <xsl:template match="//section[@class='comic-item']">
47 <xsl:variable name="item-permalink" select=".//a[@class='img-comic-link']/@href"/>
48 <xsl:variable name="picture-url" select=".//img[@class='img-responsive img-comic']/@src"/>
49 <xsl:variable name="picture-title" select=".//img[@class='img-responsive img-comic']/@alt"/>
52 <xsl:variable name="title-length" select="140"/>
53 <!-- ellipsize, inspired from http://stackoverflow.com/questions/13622338 -->
55 <xsl:when test="string-length($picture-title) > $title-length">
56 <xsl:variable name="truncated-length" select="$title-length - 3"/>
57 <xsl:value-of select="substring($picture-title, 1, $truncated-length)"/>
58 <xsl:text>...</xsl:text>
61 <xsl:value-of select="$picture-title"/>
66 <xsl:value-of select="$item-permalink"/>
69 <xsl:value-of select="$item-permalink"/>
72 <xsl:value-of select="php:functionString('Tweeper\Tweeper::strToRssDate', normalize-space(.//date))"/>
75 <xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
76 <xsl:if test="$show-multimedia = 1">
77 <img src="{$picture-url}" alt="{$picture-title}"/>
79 <xsl:text disable-output-escaping="yes">]]></xsl:text>
81 <xsl:if test="$generate-enclosure = 1">
83 Dilbert.com uses protocol-relative urls for pictures but
84 generateEnclosure() relies on curl which cannot work
87 Use http as protocol because curl gives some error when
88 attempting TLS negotiation with the server where
89 Dilbert.com assets are.
91 <xsl:copy-of select="php:functionString('Tweeper\Tweeper::generateEnclosure', concat('http:', $picture-url))"/>
96 <xsl:template match="/">
97 <xsl:variable name="channel-title" select="//meta[@property='og:title']/@content"/>
98 <xsl:variable name="channel-link" select="$BaseURL"/>
101 <xsl:attribute name="xml:base"><xsl:value-of select="$BaseURL" /></xsl:attribute>
103 <generator>Tweeper</generator>
105 <xsl:value-of select="$channel-title"/>
108 <xsl:value-of select="$channel-link"/>
111 <xsl:value-of select="//meta[@property='og:description']/@content"/>
115 <xsl:value-of select="$channel-title"/>
118 <xsl:value-of select="$channel-link"/>
121 <xsl:value-of select="concat($BaseURL, //img[@alt='Dilbert logo']/@src)"/>
124 <xsl:apply-templates select="//section[@class='comic-item']"/>