11 april 2007

RSS en WEB 2.0

RSS kan je in een groter geheel plaatsen. Het maakt deel uit van Web 2.0. Je hebt er vast en zeker al van gehoord. Maar ken je ook de geheimen van het succes? Het recept van Web 2.0 is simpel, het bestaat uit enkele basisingrediënten: delen, sociaal, tags, snel, simpel, gebruiksvriendelijk, open en gratis.

Wie er wil van proeven kan terecht op websites die al snel de harten van miljoenen internetgebruikers hebben veroverd:

Foto --> Flickr
Social bookmarking --> Del.icio.us
Video --> YouTube
Wiki --> Wikipedia
Social networking --> Myspace
Zoeken --> Technorati
Muziek --> Last.fm
RSS --> Netvibes

Om maar enkele voorbeelden te geven, want deze lijst kan veel langer.

Eigenlijk heb je voor Web 2.0 geen software meer nodig, alleen een goede browser die je leidt naar gebruiksvriendelijk webpagina ’s op basis van programmeertalen als AJAX.En wat is nu de rol van RSS binnen het Web 2.0-plaatje? RSS speelt een belangrijke rol in het delen en verspreiden van informatie. Het zorgt voor de automatische uitwisseling van gegevens tussen websites. Het toont de informatie die je wenst en brengt je op de hoogte als er iets is verschenen wat je boeit.

Maar er schuilt gevaar in het hele web 2.0 verhaal. De ontwikkelingen gaan zo soms snel dat een hele groep gebruikers de nieuwste trends niet meer kunnen volgen. Al deze nieuwe content en functionaliteit moeten ook verwerkt worden. Misschien heeft de gemiddelde gebruiker gewoon zin om eens passief te surfen.

10 april 2007

Meer uit RSS halen - Deel 2

1) De laatste vacatures bekijken

Wie op zoek is naar een nieuwe job hoeft niet meer elke dag naar een vacaturesite te surfen. Van elk door jou ingegeven zoekresultaat kan je een feed ontvangen. Wordt er een nieuwe administratieve bediende in Gent gezocht, of is een bedrijf op zoek naar een deeltijds graficus, dan is de feed al onderweg naar jouw feedapplicatie.

Een mooi voorbeeld vind je op de site van de VDAB. (
http://www.vdab.be)

2) Ontdek nieuwe foto’s

Flickr van Yahoo is een schitterende service om op een gemakkelijke manier foto ’s op te slaan en met anderen te delen. Bovendien kan je aan elke foto een label of tag toekennen. Waardoor deze foto ’s gemakkelijk door anderen teruggevonden worden. Elke tag is ook voorzien van een feed. Stel dat je je abonneert op de tag Gent. Dan word je meteen op de hoogte gebracht wordt als er een nieuwe foto over Gent op Flickr verschijnt.

3) Zoekertjes op maat

Websites met zoekertjes hebben een groot aanbod aan feeds. Zij bieden namelijk gepersonaliseerde feeds aan. De gebruiker zoekt bijvoorbeeld op de site naar een Nokia gsm van het type 6021. Hij abonneert vervolgens op deze feed, en telkens een nieuwe zoekertje geplaatst wordt van deze gsm, wordt hij hiervan op de hoogte gebracht.

Op de site 2de hands vind je een toepassing:
http://www.2dehands.be

---

Meer voorbeelden vind je het eindwerk dat zal verschijnen op 4 mei.

05 april 2007

Geschiedenis RSS

Alvorens er sprake was van RSS bestonden reeds verschillende formaten voor syndicatie. Maar geen enkele daarvan kon echt doorbreken. Eind de jaren negentig kwam daar snel verandering in. Dave Winner ontwikkelde in 1997 een eigen formaat voor syndicatie (scriptingNews) om toe te passen op één van de eerste weblogs (http://www.scripting.com).

Twee jaar later werd een ander formaat (RSS 0.90) voor syndicatie ontwikkeld door Netscape. De gebruikers van het webportaal Netscape Center konden hun webpagina personaliseren met de informatie die zij belangrijk achtten. Al snel ontstond bij webmasters de vraag hoe zijn hun content ter beschikking konden stellen op het webportaal van Netscape.

Het formaat werd echter als ingewikkeld beschouwd, en een vereenvoudiging drong zich op. Dan Libby van Netscape ontwikkelde daarom RSS 0.91. Voor Dave Winner van Userland gingen deze nieuwe aanpassingen niet ver genoeg. Hij sleutelde wat aan de Netscape versie en besloot dit uit te brengen onder dezelfde versienaam.

Netscape maakt er geen grote problemen van, want iets later werd door een herstructering van de Netscape-diensten het RSS-team opgeheven. Daarmee was de strijd om het zeggenschap over RSS nog niet gestreden. Want een ontwikkelaarsgroep rond Real Dornfest van O’Reilly besloot ook een RSS-versie uit te brengen (RSS 1.0).
Je kan het niet beschouwen als een uitbreiding op RSS 0.91. Het is een alternatieve en complexere taal die kan gecombineerd worden met andere XML-vocabulariums en RDF-formaten.

Het antwoord van Dave Winner van Userland liet niet lang op zich wachten: RSS 0.92 werd uitgebracht. Enkele belangrijke elementen werden aan het vocabularium toegevoegd. Het uitgangspunt bleef evenwel een gemakkelijk te gebruiken XML-formaat.
Alvorens de laatste versie werd uitgebracht waren er nog RSS 0.93 en 0.94, maar deze werden nooit officieel vastgelegd.

In 2002 verscheen uiteindelijk RSS 2.0 die enkele voordelen van RSS 1.0 tracht te implementeren, zoals het gebruik van modules met hun eigen namespaces.
Daarnaast werden nog enkele elementen toegevoegd of afgevoerd, en zo zijn we gekomen tot de versie die op heden nog steeds als standaard geldt.

02 april 2007

RSS Elementen

  • <xml>

    De eerste regel van een RSS-feed vertelt aan programma’s uit welke taal het document is opgebouwd. Voor een goede afhandeling mag ook het versienummer niet ontbreken. Hier wordt verwezen naar XML-versie 1.0 zoals in de RSS 2.0-specificatie staat beschre-ven.

    Voorbeeld:

    <? xml version=”1.0” ?>

  • <rss>

    Elk XML-document heeft een root die maar éénmaal mag voorkomen. In dit geval heet de root simpelweg RSS. De root informeert de verwerkingssoftware dat het document van het RSS-type is. Dit element bevat ook nog het attribuut version, die meer informa-tie verschaft over het gebruikte versienummer.

    Voorbeeld:

    <rss version=”2.0”>

  • <channel>

    Het <channel> element moet altijd aanwezig zijn in een RSS-feed. Binnen deze tag be-vinden zich de verschillende items en elementen die informatie geven over de feed.
    Een <channel> moet altijd 3 elementen bevatten:

    <title>
    <link>
    <description>

    Voorbeeld:

    <channel> <title>De standaard Online: Front</title> <link>http://www.destandaard.be/front/</link> <description> Een overzicht van het belangrijkste nieuws.</description></channel>

  • <title>

    De <title> van een feed beschrijft het <channel>. Je kan het een beetje vergelijken met de headline van een artikel. Als je de feed in de webbrowser weergeeft, is de titel dus het duidelijkste element op de pagina.

    Voorbeeld:

    <title>De standaard Online: Front</title>

  • <link>

    Een hyperlink naar:
    de URL van de website.de URL van de pagina waarop zich links naar items bevinden.

    Voorbeeld:

    <link>http://www.destandaard.be/front/<link>

  • <description>

    Een beschrijving van de feed.

    Voorbeeld:

    <description>Een overzicht van het belangrijkste nieuws.</description>

  • <pubData>

    De datum van de publicatie van het <channel>. Stel dat een online krant elke ochtend een feed wil publiceren op een bepaald tijdstip. Dan moeten zij bij <pubData> het uur plaatsen waarop de feed mag verschijnen.

    Voor dit tijdstip zal de feed niet beschikbaar zijn. De publicatiedatum van de channel kan verschillend zijn van een item. Als bij de items geen publicatiedatum staat vermeld dan geldt de datum van <pubDate> bij het <channel>.

    Je feed moet natuurlijk op het juiste uur verschijnen, daarom is het belangrijk dat bij de opgegeven <pubDate> o.a. de tijdzone staat vermeld in de syntaxis. Aan de schrijfwijze zijn dus regels verbonden die je terugvindt in RFC 828. (http://asg.web.cmu.edu/rfc/rfc822.html)

    Voorbeeld:

    <pubDate>Fri, 9 Feb 2007 10:15 +0100</pubDate>

  • <managingEditor>

    Heeft betrekking op het e-mailadres van de persoon die verantwoordelijk is voor de in-houd van de feed. Dit element plaats je als de feed maar één auteur heeft. Bij meerdere auteurs wordt gebruik gemaakt van <author> dat je vindt onder het element <item>.

    Voorbeeld:

    <managingEditor>redactie@destandaarde.be</managingEditor>

  • <webMaster>

    Dit element omvat het e-mailadres van de persoon die verantwoordelijk is voor alle tech-nische vragen die verband houden met de feed. In de meeste gevallen is dit het e-mailadres van de beheerder van de website.

    Voorbeeld:

    <webMaster>webmaster@destandaard.be</webMaster>

  • <ttl>

    De afkorting ttl slaat op: time to live. Het getal tussen de tags geeft het aantal minuten aan dat een RSS-applicatie moet wachten voordat hij kijkt of er nieuwe content aan de feed is toegevoegd. Gedurende die periode kan de data in de cache van de applicatie opgeslagen worden, alvorens er nieuwe data van de feed wordt opgehaald.

    Voorbeeld:

    <ttl>60</ttl>

  • <copyright>

    Dit element vermeldt de copyrightgegevens.

    Voorbeeld:

    <copyright>© De Standaard Online</copyright>

  • <category>

    Je kan aan een <channel> één of meerdere categorieën toewijzen. Dit biedt tal van voordelen:
    Je webpagina, blog is makkelijker terug te vinden op sommige zoekmachines.

    Bijvoorbeeld Technorati (http://www.technorati.com/) dat is opgebouwd rond categorieën en labels.In een feedreader kan je gaan selecteren en filteren op categorieën en thema’s.

    Voorbeeld:

    <category>Newspapers</category>
    Het <category> element heeft ook een attribuut: domain.Het duidt een categoriesysteem aan, zoals dat van de zoekmachine Dmoz. (http://www.dmoz.org)

    Voorbeeld:

    <category domain=”http://www.dmoz.org/World/Nederlands/Nieuws_en_Media/Dag-_en_Nieuwsbladen”</category>

  • <generator>

    Geeft aan welk programma de feed heeft samengesteld. Veel feeds worden namelijk automatisch gegenereerd. Iets wat je vaak terugvindt in de blogsfeer.

    Als je een nieuwe post doet bij bijvoorbeeld: Wordpress (http://www.wordpress.org/) dan zal de feedgenerator onmiddellijk een nieuwe feed samenstellen.

    Voorbeeld:

    <generator>http://wordpress.org/?v=MU</generator>

  • <language>

    Dit element beschrijft de taal waarin de feed is opgesteld. Een feedapplicatie, zoekma-chine kan op die manier feeds gaan groeperen volgens de taal.
    Een lijst met mogelijke waarden kan je vinden op de site van Technology at Harvard Law.(http://blogs.law.harvard.edu/tech/stories/storyReader$15)

    Voorbeeld:

    <language>nl-be</language>

  • <rating>

    Met de PICS (Platform for Internet Content Selection) rating geef je aan of de feed geschikt is voor kinderen. Dit element wordt echter zelden gebruikt.

    Wil je toch meer informatie? Surf dan naar de websites van het W3C (http://www.w3.org/PICS) of van de Classification Group. (http://www.classify.org/safesurf)

    Voorbeeld:

    <rating>(PICS-1.1 “http://www.classify.org/safesurf/” l r (SS--000 1)) </rating>

  • <docs>

    Een verwijzing naar de URL met documentatie over het RSS 2.0-formaat.

    Voorbeeld:

    <docs>http://blogs.law.harvard.edu/tech/rss</docs>

  • <lastBuildDate>

    Geeft informatie over de laatste keer dat de inhoud van de feed is gewijzigd. De datum kan alleen betrekking hebben op het verleden. In tegenstelling tot <pubDate> dat ook een datum in de toekomst mag hebben. Voor de schrijfwijze gelden ook de specificaties van RFC 828. (http://asg.web.cmu.edu/rfc/rfc822.html)

    Voorbeeld:

    <lastBuildDate>Sun, 18 Feb 2007 07:30:55 GMT</lastBuildDate>

  • <skipHours>

    Zegt aan feedapplicaties op welke uren zij geen poging mogen ondernemen om nieuwe items te vinden. Dit element kan tot 24 childelementen van het type <hour> hebben, met een waarde die vanzelfsprekend start bij 0 en eindigt bij 23.

    Voorbeeld:

    <skipHours>
    <hour>2</hour>
    <hour>3</hour>
    <hour>4</hour>
    </skipHours>

  • <skipDays>

    Dit element komt overeen met <skipHours>, maar hiermee vertel je aan de feedlezer op welke dagen hij niet mag kijken voor nieuwe items. Het childelement <day> bevat altijd de Engelse naam van één van de zeven dagen van de week.

    Voorbeeld:

    <skipDays>
    <day>Saturday</day>
    <day>Sunday</day>
    </skipDays>

  • <cloud>

    Bijna alle elementen bij RSS beschrijven waarvoor zij staan. Bij <cloud> is dit niet het geval. <Cloud> komt van: “a cloud of members”, een gemeenschap die gezamenlijk kan geïnformeerd worden over inhoudsupdates. Dit element is verbonden met de rsscloud interface. (http://blogs.law.harvard.edu/tech/soapMeetsRss#rsscloudInterface)

    Met deze interface wordt het mogelijk voor een computer of een webpagina met RSS-items om op de hoogte te blijven van updates van een feed. Zonder daarvoor op bepaalde tijdsintervallen de hele feed telkens opnieuw te moeten downloaden. De <cloud> zendt informatie uit dat de feed is gewijzigd. Dit resulteert in minder bandbreedteverbruik.

    Het element heeft verschillende attributen:

    Domain: Domeinnaam of IP-adres van de host.
    Port: De TCP-poort waarmee de service kan bereikt worden.
    Path: Pad van de service op de host.
    Registerprocedure: Naam van de registratieprocedure.
    Protocol: XML-rpc, soap of http-post.

    Voorbeeld:

    <cloud domain=”rpc.sys.com” port=”80” path=”/RPC2” registerProce-dure=”myCloud.rssPleaseNotify” protocol=”xml-rpc” />

    In de praktijk wordt deze toepassing weinig gebruikt. Wil je toch meer informatie dan vind je die op de website van Thetwowayweb. (http://www.thetwowayweb.com/soapmeetsrss)

  • <image>

    Als je aan een feed een logo of afbeelding wil toevoegen, dan gebruik je best dit optio-neel element. In sommige feedreaders zal de afbeelding getoond worden naast de titel, wat de feed mooier doet ogen. Bijvoorbeeld bij de reader van Awasu. (http://www.awasu.com)

    Het <image> element heeft 6 childelementen, waarvan je er 3 moet gebruiken:

    <url> URL, locatie van de afbeelding.
    <title> Titel van de afbeelding.
    <link> Webpagina waar je naartoe gaat bij het klikken op de afbeelding.

    En er zijn ook de 3 optionele childelmenten van <image>:

    <width> De breedte van de afbeelding.
    <height> De hoogte van de afbeelding.
    <description> Beschrijving van de afbeelding.

    Voorbeeld:

    <image> <url>http://www.standaard.be/Assets/Image/Images_Internet/logo_dso_rss.gif</url> <title>De standaard Online: Front</title> <link>http://www.destandaard.be/front</link> <description>De Standaard Online</description></image>

  • <item>

    Eens de informatie over een feed is opgegeven, kan je de verschillende items toevoegen. Een <item> kan je vergelijken met de titel plus korte beschrijving van een artikel op de voorpagina van een online krant. Eens op de titel geklikt kom je terecht op de pagina met het volledige artikel.

    <Item> heeft 5 childelementen die je ook terugvindt bij <channel>. De verschillen tussen de elementen zijn miniem. Daarom volgt enkel een korte beschrijving van deze elementen.

    <title> De titel van het item
    <link> De webpagina waar het item zich bevindt.
    <description> Korte beschrijving van het item.
    <pubDate> Datum en uur waarop het item mag gepubliceerd worden. <category> De categorie waartoe het item behoort.

    Voorbeeld:

    <item> <title>Heidebrand op militair domein Brasschaat</title> <link>http://www.standaard.be/Artikel/Detail.aspx?artikelid=091AAKGB </link> <description>De oorzaak van de brand is nog onbekend, wel is al duidelijk dat er geen schietoefeningen aan de gang waren.</description></item>

  • <comments>

    De URL van de webpagina waarop bezoekers commentaar op een artikel kunnen schrij-ven of lezen. Vooral bij weblogs zal je dit element terugvinden.

    Voorbeeld:

    <comments>http://bloggersoverde.skynetblogs.be/post/4222505/het-skynetblogboek</comments>

  • <author>

    Wanneer een feed meer dan één auteur heeft, dan kan je kiezen voor het <author> element, om de auteur van elk <item> te benoemen. Tussen de tags staat het
    e-mailadres van de auteur, en optioneel plaats je tussen de haakjes zijn naam en voornaam.

    Als de feed slechts één auteur heeft, dan wordt dit element achterwege gelaten, en vervangen door het element <managingEditor> bij <channel>.

    Voorbeeld:

    <author>david.vandewalle@destandaard.be (Vandewalle David)</author>

  • <source>

    De naam van het RSS-channel waar het <item> oorspronkelijk vandaan komt. Vaak worden items tussen RSS-feeds uitgewisseld en is de bron niet meer te achterhalen. Het <source> element toevoegen verhelpt dit probleem. Dit element bevat het attribuut URL en tussen de tags wordt de naam van de bron geplaatst.

    Voorbeeld:

    <source url=”http://www.standaard.be/Rss.aspx?section=front”>De Standaard Front</source>

  • <guid>

    Door gebruik te maken van de GUID (Global Unique Identifier) zal je niet tweemaal hetzelfde <item> in je feedaggregator te zien krijgen. Ook als je een <item> met een GUID wijzigt of opnieuw uitbrengt dan zal het oude <item> met hetzelfde ID automatisch aangepast worden, en zal er dus geen nieuw <item> aan je aggregator toegevoegd worden.

    Het <guid> element bevat één attribuut (isPermaLink). Dit heeft betrekking op de URL van de webpagina waar het artikel of weblog permanent is opgeslagen. Indien je niet naar een URL verwijst kan je de waarde op false zetten of het attribuut weglaten.

    Voorbeeld:

    <guid isPermaLink=”true”>http://www.standaard.be/Artikel/Detail.aspx?artikelid=941A6TH8</guid>

  • <enclosure>

    Door gebruik te maken van dit element, ga je multimediale inhoud aan een RSS-feed toevoegen. Het bestand zelf wordt niet in de feed geplaatst, maar je vindt een verwijzing naar de locatie. Afhankelijk van de gebruikte aggregator zal het bestand vervolgens ge-download of genegeerd worden.

    Het element heeft geen inhoud maar bevat 3 belangrijke attributen:
    URL De locatie van het bestand.
    Length De bestandsgrootte in bytes.
    Type Beschrijving van het type bestand.

    Enkele veel voorkomende waardes van het attribuut type:

    image/jpeg
    audio/mpeg
    application/x-shockwave-flash
    video/quicktime

    Voorbeeld:

    <enclosure url=”http://download.streampower.be/vrt/podcast/StuBru_spod_20070330.mp3” length=”41834640” type=”audio/mpeg” />

RSS 2.0 Diagram

RSS 2.0 Diagram Hoe is een RSS-bestand nu eigenlijk opgebouwd. Welke tags mag je gebruiken in een RSS-bestand en waar? Daarom heb ik een diagram opgesteld met alle mogelijke tags.