RSS Feeds With a Fresh Coat of XSLT
Yes, it’s 2025, and I’m still happily using RSS. Not only that. I’ve just gone and added an XSLT stylesheet to my blog’s feed: https://www.cedricbonhomme.org/blog/index.xml.
Why? Because why not.
For most people, an RSS feed is just raw XML that either:
- Opens in a newsreader (if you’re one of the enlightened few), or
- Looks like incomprehensible angle-bracket soup in the browser.
With XSLT styling, the second group of people at least gets a pretty preview instead of a wall of tags. Think of it as putting lipstick on an XML pig. Except this pig now has a decent font, some CSS, and a “Visit Website →” button. 🐷✨
The Retro Charm
There’s something delightfully anachronistic about it. Everyone is busy chasing the latest AI-powered social streams, and I’m here polishing my RSS feed with technology that first appeared around the time flip phones were cool. With my cup of tea.
It’s like maintaining a vinyl collection in the age of streaming.
How It Works
The trick is simple:
- Add an XML stylesheet declaration at the top of your feed.
- Serve it with the right header.
- Write some XSLT and CSS to make it look decent.
Voilà, your feed is no longer a sad text dump. It’s a mini landing page.
The Hugo template for my feed now includes an XML declaration and a reference to the XSLT stylesheet:
{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
{{- printf "<?xml-stylesheet href=%q type=\"text/xsl\"?>" ("style.xsl" | relLangURL) | safeHTML }}
The stylesheet itself lives at style.xsl.
Why Bother?
Because RSS is still awesome. It’s decentralized, private, and doesn’t shove ads or tracking down your throat. And now, if a curious visitor stumbles on my feed, they’ll see something friendly instead of a developer-only artifact.
So, if you’re also clinging lovingly to RSS in 2025:
- Subscribe to my blog via your favorite newsreader.
- Or just admire the shiny styled feed in your browser.
Long live RSS. Long live XSLT. Long live Newspipe!