Posts tonen met het label XML. Alle posts tonen
Posts tonen met het label XML. Alle posts tonen

05 juni 2007

Hoe ziet een goede RSS 2.0-feed er uit?

Op deze vraag kan je moeilijk een eensluidend antwoord geven. Afhankelijk van de noden en wensen van de aanbieder zal een RSS-feed er anders uitzien.

Iemand die een feed enkel op een bepaald tijdstip wil publiceren, zal bepaalde tags moeten plaatsen.

Terwijl een audiobestand ter beschikking stellen nog een andere tag vereist. Daarom heb ik me in onderstaand voorbeeld beperkt tot de tags die het meest in RSS-feeds voorkomen.

Je bent dus uiteraard vrij om andere elementen te plaatsen. Let wel op! Sommige elementen mogen niet ontbreken om een geldige RSS-feed te bekomen.

Het diagram, dat zich ook in deze blog bevindt, vermeldt welke elementen verplicht zijn.

Voorbeeld:
(druk op de afbeelding voor een grote weergave in uw browser)


En hier ze je het resultaat van dit xml-bestand in Netvibes:


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” />

23 februari 2007

Wat is XML

Inleiding

De optie om een RSS-feed te genereren is tegenwoordig aanwezig in veel Content Management Systemen, webtoepassingen en softwarepakketten, die hiervoor speciaal ontworpen zijn. Maar soms is het handig om te weten wat de achterliggende techniek is. Daarom ga ik dit hoofdstuk dieper in gaan op het technisch gedeelte van een RSS-feed. Maar alvorens we dat doen, kunnen we niet om XML heen. Elke RSS-feed is namelijk een XML-bestand.

XML (= eXtensible Markup Language)

Wat is XML?

XML is een standaard die werd uitgevaardigd door het W3C (World Web Consortium). Een onafhankelijke organisatie die web-gerelateerde technologieën en standaarden ontwikkelt.

Bij XML gaat het over het beschrijven van de aanwezige data. Door tags toe te voegen aan de gegevens, creëer je datacontainers. Elke tag geeft het begin of einde van een nieuwe datacontainer aan. In volgend voorbeeld zie je o.a. dat tags worden omgeven door scherpe haakjes.



XML is nogal verschillend van HTML. De tags zeggen niks over de opmaak van de gegevens en je kan ze zelf benoemen.

Een voorbeeld van een klein XML-bestand.



Waarom XML?


XML is een puur tekstbestand dat onafhankelijk is van platform, fabrikant en hardware. Vele toepassingen - zoals een eenvoudige kladblok - op eender welke computer kunnen omspringen met een XML-bestand. Je hoeft bovendien niet te betalen voor het gebruik van XML, omdat het licentievrij is.

XML-gegevens zijn gemakkelijk uitwisselbaar tussen verschillende toepassingen. Tenminste als de afspraken omtrent het gebruik van tags worden nageleefd. Iedereen kan wel zijn eigen tags definiëren, maar daarom kan niet elke toepassing er mee omspringen. Daarom zijn er standaarden vastgelegd zoals XHTML (HTML volgens de XML-syntax, MathML (wiskundige formules), SVG (weergeven van grafische informatie).

Het is heel flexibel, daar de inhoud gescheiden is van de opmaak, kan deze op verschillende manieren worden weergegeven. Met één bronbestand, de xml-file kan je uw gegevens op verschillende platformen presenteren (webbrowser, pda, …). Eén kleine aanpassing volstaat al, om de inhoud op de verschillende platformen te wijzigen.

Zoeken naar, filteren van en navigeren door gegevens gaat op een snelle en efficiënte wijze.

XML is dus een krachtig instrument dat vele toepassingen kent, waaronder natuurlijk ook RSS, het onderwerp waarover deze blog over handelt.