Introduction
Introduction Statistics Contact Development Disclaimer Help
Title: RSS feed for OpenBSD stable packages repository (made with XSLT)
Author: Solène
Date: 05 June 2019
Tags: openbsd automation
Description:
I am happy to announce there is now a RSS feed for getting news in case
of new
packages available on my repository
[https://stable.perso.pw/](https://stable.perso.pw/)
The file is available at
[https://stable.perso.pw/rss.xml](https://stable.perso.pw/rss.xml).
I take the occasion of this blog post to explain how the file is
generated as I
did not find easy tool for this task, so I ended up doing it myself.
I choosed to use **XSLT**, which is not quite common. Briefly, **XSLT**
allows
to use some kind of XML template on a XML data file, this allow loops,
filtering etc... It requires only two parts: the template and the data.
**Simple RSS template**
The following file is a template for my RSS file, we can see a few tags
starting by `xsl` like `xsl:for-each` or `xsl:value-of`.
It's interesting to note that the `xsl-for-each` can use a condition
like
`position < 10` in order to limit the loop to the 10 first items.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<description></description>
<title>OpenBSD unofficial stable packages
repository</title>
<link>https://stable.perso.pw/</link>
<atom:link href="https://stable.perso.pw/rss.xml"
rel="self" type="application/rss+xml" />
<!-- END CONFIGURATION -->
<xsl:for-each select="feed/news[position()&lt;10]">
<item>
<title>
<xsl:value-of select="title"/>
</title>
<description>
<xsl:value-of select="description"/>
</description>
<pubDate>
<xsl:value-of select="date"/>
</pubDate>
</item>
</xsl:for-each>
</rss>
</xsl:template>
</xsl:stylesheet>
**Simple data file**
Now, we need some data to use with the template.
I've added a comment block so I can copy / paste it to add a new entry
into the
RSS easily. As the date is in a painful format to write for a human, I
added to
my Makefile starting the commands a call to a script replacing the
string DATE
by the current date with the correct format.
<feed>
<news>
<title>www/mozilla-firefox</title>
<description>Firefox 67.0.1</description>
<date>Wed, 05 Jun 2019 06:00:00 GMT</date>
</news>
<news>
<title></title>
<description></description>
<date></date>
</news>
-->
</feed>
**Makefile**
I love makefiles, so I share it even if this one is really short.
all:
sh replace_date.sh
xsltproc template.xml news.xml | xmllint -format - | tee
rss.xml
scp rss.xml perso.pw:/home/stable/
rm rss.xml
When I want to add an entry, I copy / paste the comment block in
news.xml, add
DATE, run `make` and it's uploaded :)
The command **xsltproc** is available from the package **libxslt** on
OpenBSD.
And then, after writing this, I realise that manually editing the
result file
rss.xml is as much work as editing the news.xml file and then process
it with
xslt... But I keep that blog post as this can be useful for more
complicated
cases. :)
You are viewing proxied material from dataswamp.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.