» direct naar zoek en menu

Tijdschrift voor webwerkers » Artikel #31

RSS - Laat die content maar stromen - Laat die content maar stromen

Met RSS en XML is het aanbieden van andermans content op jouw site makkelijker dan ooit. Maar hoe pak je dat nou aan? In dit artikel een korte theoretische uitleg en een fiks aantal praktijkvoorbeelden.

Volgens sommigen staat RSS voor ‘Really Simple Syndication’ en het is dus een formaat om content te syndiceren. Als je nog niet wist wat RSS inhield, zegt dat je nog niets, maar waar het op neer komt is dit: Door de manier waarop een RSS-document is opgebouwd biedt het de mogelijkheid om de content (de inhoud of ‘platte tekst’) van een website aan te bieden op een gestandaardiseerde manier. Door dit gestandaardiseerde formaat kunnen andere websites of stukken software dit formaat eenvoudig inlezen en daar de benodigde informatie uit halen om die opnieuw te kunnen weergeven. Hierdoor is RSS dus uitermate geschikt voor sites die vaak updaten, en daarbij hun content presenteren in afzonderlijke stukken of artikelen. De typen sites die het meest van RSS gebruik maken zijn dan ook nieuwssites en weblogs. Als eerste zal ik de geschiedenis en het formaat zelf bespreken, maar als je meer geïnteresseerd bent in de toepassingen, dan kun je deze twee stukken overslaan.

De geschiedenis van RSS

RSS is ontwikkeld door Netscape, dat het formaat gebruikte voor Netscape Netcenter (het latere My Netscape). Op deze site werd veel informatie van verschillende bronnen bijeengebracht en gezien het succes van deze site ontstond de vraag bij sitebouwers hoe zij hun content het beste geschikt konden maken voor dergelijke herdistributie. Hiervoor ontwikkelde Dan Libby het RSS 0.91 formaat. Nadat My.Netscape werd stopgezet wierp een aantal mensen zich naar voren als beschermheer van het formaat RSS. De bekendste van deze groep is Dave Winer, ‘baas’ van Userland. Maar zoals dat gaat met grote ego’s kregen Dave en een aantal van deze andere ontwikkelaars ruzie over hoe RSS zich zou moeten ontwikkelen. Dat leidde tot twee verschillende ‘standaarden’: RSS 0.92 van Dave Winer en RSS 1.0 van de andere ontwikkelaars. Het grootste probleem hiervan is dat als je twee standaarden hebt, het er uiteindelijk op neer komt dat er geen standaard is. Zelfs over de betekenis van de afkorting RSS was onenigheid: staat het nou voor ‘Really Simple Syndication’ of voor ‘RDF Site Summary’? Uiteindelijk is de ruzie bijgelegd en de huidige standaard is RSS 2.0. En alhoewel deze in mijn ogen niet meer zo simpel en elegant is als RSS 0.91 was, is het toch zeer goed dat deze standaard er nu is. RSS 2.0 combineert namelijk de afzonderlijke voordelen van de versies 0.92 en 1.0. Bovendien zijn RSS 2.0-documenten met een minimale inspanning ‘achterwaarts compatibel’ met zowel RSS 0.92 als RSS 1.0 documenten.

Voor meer informatie omtrent het gekibbel en het tot stand komen van de huidige standaard verwijs ik graag naar RSS-classic, RSS 1.0 and a historical debt’ of Mark Pilgrim’s zeer uitgebreide timeline.

Het formaat RSS

RSS is een XML-toepassing. Dit houdt in dat RSS-documenten ook XML-documenten zijn. Dat heeft twee grote voordelen. Enerzijds zit in een RSS-document niet alleen de informatie die het document verschaft, maar meteen ook de betekenis van deze informatie. Anderzijds is XML een formaat dat leesbaar is door mensen. Als je niet snapt wat ik hiermee bedoel, hernoem dan maar eens een Word-document naar bestandsnaam.txt en open het dan in ‘Kladblok’ of ‘Simpletext’. Doe hetzelfde met een XML- of RSS-document en je zult zien dat je in het XML-document veel beter kunt zien welke informatie er in staat. Hoe XML precies werkt wordt in een eerder artikel op NAAR VOREN uitgelegd.

Een voorbeeld van hoe een RSS-document er uit kan zien staat hieronder. Het is een deel van de Newsfeed van de BBC en ik heb voor het overzicht een aantal zaken weggelaten.

<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
<channel>
<title>BBC News | Front Page</title>
<link>http://news.bbc.co.uk/go/rss/-/1/hi/default.stm</link>
<description>Updated every minute of every day</description>

<item>
<title>Three charged over 'Tube terror plot'</title>
<link>http://news.bbc.co.uk/go/rss/-/1/hi/england/2198228.stm</link>
<description>Three men are arrested on terror charges in London amid reports of a plot to target the
city's underground.</description>
</item>
<item>

<title>Firefighters urged to lift strike threat</title>
<link>http://news.bbc.co.uk/go/rss/-/1/hi/uk_politics/2485303.stm</link>
<description>As both sides take a day off from negotiations, John Prescott urges firefighters to
'take the gun away' from their employers' heads.</description>
</item>
</channel>
</rss>

De eerste twee regels geven aan dat het een XML-document betreft, en in het bijzonder RSS versie 2.0. In het document zit altijd exact één <channel> element, waarin de titel en beschrijving van het document worden gegeven en ook een link naar de locatie op het web waar dit document bij hoort. Verder staan er in <channel> een aantal <item> tags, waarin de afzonderlijke berichten worden uiteengezet.

Voor een volledig overzicht van alle elementen, verwijs ik naar de RSS 2.0 specificatie door Dave Winer. In de praktijk zul je vaak zien dat RSS-documenten zijn uitgebreid met andere elementen, die zijn gedefinieerd in zogenaamde Namespaces. Hierover lees je meer in het artikel ‘Extending RSS 2.0 with Namespaces’ door Kevin Hemenway.

Het toepassen van RSS

Na deze droge stof zul je je ongetwijfeld afvragen wat een normale sterveling nu kan aanvangen met RSS. RSS-feeds worden erg veel gebruikt door mensen die via een zogenaamde Aggregator een aantal feeds ophalen. Zo’n Aggregator is een stuk software dat een aantal RSS-feeds ophaalt en verwerkt, waardoor het voor de gebruikers eenvoudig is om op de hoogte te blijven van updates op de betreffende sites. Ook kun je met RSS de site in je eigen vormgeving tonen, en je bent dus niet gebonden aan de vorm die de HTML op de oorspronkelijke website er aan meegeeft. Voorbeelden van deze Aggregatoren zijn Feeddemon, Amphetadesk en Aggie (voor Windows) of NetNewsWire (voor MacOs) of Radio Userland (voor Windows en Mac). Voor een overzicht van de beschikbare RSS-feeds ga je naar Synidc8 of Newsisfree. Veel nederlandse feeds vind je op Syndicatie.nl.

Als je over een eigen webserver beschikt waar je scripts kunt draaien, kun je daar ook een eigen aggregator opzetten zoals MyHeadLines, of FeedOnFeeds. Deze werken eigenlijk net zoals de desktop-applicaties die hierboven staan, ze zijn alleen vanaf het web beschikbaar en kun je deze openbaar maken als je wilt. Dennis Slagers doet dit bijvoorbeeld op zijn Syndication pagina.

Zoals ik aan het begin van dit artikel vermeldde, is RSS een gestandaardiseerd formaat, waardoor het eenvoudig is in te lezen. Het is daarom simpel om zelf toepassingen voor RSS te maken. Ik zal hier een voorbeeld geven van hoe je met een eenvoudig PHP-script een overzicht van de laatste nieuws berichten van de BBC op je site kunt zetten.

Het script dat we gaan gebruiken voor het ‘fetchen’ (het eigenlijke ophalen van de feed) en ‘parsen’ (het inlezen en ‘begrijpen’ van de feed) moet wel aan een belangrijke eis voldoen: De RSS-feed moet ‘gecached’ worden. Dit wil zeggen dat de feed lokaal wordt opgeslagen omdat we niet willen dat elke keer dat de site wordt opgevraagd ons script ook de feed op moet gaan halen. Dit zorgt voor vertragingen bij je eigen bezoekers en het nodeloos opslokken van bandbreedte bij de site die de feed aanbiedt. Ons script moet dus zelf kunnen bedenken dat hij de feed bijvoorbeeld hooguit eenmaal per anderhalf uur ververst. Als de lokale kopie jonger is, dan krijgt de bezoeker van je site gewoon die te zien. Gelukkig zijn er scripts voorhanden die dit fetchen, parsen en cachen allemaal voor ons regelen. Eén hiervan is MagpieRSS, een behoorlijk complex en veelzijdig script, maar toch eenvoudig toe te passen.

Omdat we dus gebruik kunnen maken van een bestaand script, rest ons alleen nog de bijzonder eenvoudige taak van het ophalen van de feed, en deze weer te geven:

<?php

require_once('rss_fetch.inc');

$feedurl = "http://www.bbc.co.uk/syndication/feeds/news/";
$feedurl .= "ukfs_news/front_page/rss091.xml";

$rss = fetch_rss( $feedurl );

foreach ($rss->items as $item) {

  echo( "<h4><a href='" . $item['link'] .
"'>");
  echo( stripslashes ($item['title']) . "</a></h4>\n");
  echo( "<p>" . stripslashes($item['description']) .
        "</p>\n");
}

?>

In de eerste regel wordt de library (rss_fetch.inc) die het fetchen, cachen en parsen regelt geopend. Deze is dus te downloaden vanaf de download pagina van Magpie. In de tweede en derde regel wordt in een variabele de URL van de BBC newsfeed gezet, en de vierde regel haalt deze dan vervolgens op (of geeft natuurlijk de opgeslagen versie terug). De parser heeft de <items> uit de feed in $rss->items gezet en deze worden in het ‘foreach’ gedeelte stuk voor stuk getoond in de browser. Je ziet: met een minimale kennis van PHP (of een andere scripting taal natuurlijk) kun je zelf een toepassing voor RSS ontwikkelen. Een kind kan de was doen!

Als je dieper in Magpie wilt duiken, verwijs ik je naar de Magpie Cookbook.

Het maken van een eigen RSS-feed

Tot slot nog een paar opmerkingen over het zelf genereren van RSS. De meeste gangbare software voor het onderhouden van weblogs en nieuwssites hebben de mogelijkheid om kant en klare RSS-feeds te genereren, dus daarom zal ik daar niet veel aandacht aan besteden in dit artikel. Mocht je toch zelf een RSS-feed willen maken, dan kun je met deze PHP-library RSS 1.0-feeds maken. Een andere mogelijkheid is Mark Pilgrim’s RSS 2.0-template, die bedoeld is voor weblogs. Omdat dit template gebruik maakt van een aantal namespaces (‘uitbreidingen’) voor RSS is het daardoor bijzonder veelzijdig en dus ook geschikt voor andere toepassingen.

Als je je eigen RSS-feed gemaakt hebt, kun je deze door de RSS validator laten controleren om te zien of het goede RSS is. Als dit zo is, zullen de meeste parsers en aggregatoren zonder problemen met je feed kunnen omgaan.

Auteur

Bob den Otter

is sinds 1993 verknocht aan het internet. In het dagelijks leven is hij dan ook werkzaam als internet ontwikkelaar bij zijn eigen bedrijf Two Kings.

In zijn vrije tijd werkt hij aan Pivot en hij onderhoudt een eigen weblog met RSS-feed. Bob z’n kat Charlotte vindt dat ze te weinig aandacht krijgt.

Publicatiedatum: 03 december 2002

Let op

Naar Voren is op 18 juli 2010 gestopt met publiceren. De artikelen staan als een soort archief online. Het kan dus zijn dat de informatie verouderd is en dat er inmiddels veel betere of makkelijkere manieren zijn om je doel te bereiken.

Copyright © 2002-2016 » NAAR VOREN en de auteurs