I Feed RSS, versione 2.0
Data: 5/25/2005
Categoria: XML e derivati
Codice d'esempio


I Feed RSS(Really Simple Syndication) sono dei particolari file, scritti in formato XML, creati per facilitare la diffusione di contenuti nel web, su vari canali.
L'ascesa del formato RSS è principalmente dovuta alla nascita dei Web Logs(Blogs), la maggiorparte dei quali distribuiscono il proprio feed per permettere ai propri visitatori di tenersi aggiornati sugli ultimi post inseriti; ora i file RSS sono un elemento importante per una qualsiasi applicazione internet, dal portale al sito personale, poiché danno un notevole tocco di usabilità e di facilità di aggiornamento.
Questo tipo di file, oltre a dover attenersi alle specifiche XML 1.0 dettate dal W3C, ne ha anche delle sue proprie, arrivate alla versione 2.0; vediamole in dettaglio:

L'elemento rss:
è l'elemento root del documento, nel quale vanno dichiarati la versione del feed (tramite l'attributo version) ed eventuali xml namespaces, per l'uso di elementi aggiuntivi.
Questo elemento ha un unico tipo di sottoelementi richiesti dalle specifiche: l'elemento channel, che racchiude la descrizione del canale di distribuzione dei propri contenuti.
L'elemento channel ha elementi richiesti ed elementi opzionali ...
esempio:

<?xml version="1.0" encoding="iso-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel> ... </channel>
</rss>
Sottoelementi di channel richiesti:
  • title: è il titolo del canale di distribuzione. Se il canale di distribuzione sarà il proprio sito web, questo elemento avrà il contenuto del titolo vero e proprio del sito.
    esempio:
    <title>PeppeDotNet.it updates</title>
  • link: è l'URL del sito web corrispondente al canale di distribuzione.esempio:
    <link>http://www.peppedotnet.it</link>
  • description: è la descrizione dei contenuti distribuiti.

    esempio:
    <description>Ultime pubblicazioni del sito PeppeDotNet.it</description>
Sottoelementi channel opzionali:
  • language: è la lingua utilizzata nel canale di distribuzione. I valori permessi per questo elemento sono definiti dal W3C.
    esempio:
    <language>it-it</language>
  • copyright: è la dichiarazione del copyright sui contenuti del canale di distribuzione.
    esempio:
    <copyright>PeppeDotNet.it 2004</copyright>
  • managingEditor: è la persona responsabile dei contenuti del canale di distribuzione. Il contenuto di questo elemento ha però delle restrizioni, in quanto solo questi sono i formati accettati dalle specifiche RFC 2822:
    <managingEditor>info@peppedotnet.it</managingEditor>
    
    <managingEditor>info@peppedotnet.it (Marchi Giuseppe)</managingEditor>
    <managingEditor>Marchi Giuseppe <info@peppedotnet.it></managingEditor>
  • webMaster: è il webmaster del sito che distribuisce il feed rss. Anche il contenuto di questo elemento deve essere conforme alle specifiche RFC 2822, come per l'elemento managingEditor sopra descritto.
    esempio:
    <webMaster>info@peppedotnet.it (Marchi Giuseppe)</webMaster>
  • pubDate: è la data di pubblicazione di contenuti nel canale di distribuzione. La data contenuta in questo elemento deve essere conforme alla specifica Date and Time Specification of RFC 822. Ecco i formati possibili:
    <pubDate>Mon, 11 Oct 2004 08:00:00 EST</pubDate>
    
    <pubDate>Mon, 11 Oct 2004 13:00:00 GMT</pubDate>
    <pubDate>Mon, 11 Oct 2004 15:00:00 +0200</pubDate>
  • lastBuildDate: è la data di ultimi cambiamenti del contenuto del canale di distribuzione. Anche per questo elemento valgono le regole dettate dalla specifica RFC 822.
    esempio:
    <lastBuildDate>Mon, 11 Oct 2004 13:00:00 GMT</lastBuildDate>
  • category: indica la categoria cui appartengono i contenuti distribuiti.
    esempio:
    <category>News</category>
  • docs: indica l’URL delle specifiche seguite nel proprio feed RSS.
    esempio:
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  • generator: indica l'applicazione, l'assembly, o il modo in cui il feed RSS è stato generato.
    esempio:
    <generator>Assembly dotRSS v0.9.2.1 Beta1 (http://www.peppedotnet.it/dotRSS/)</generator>
  • cloud: consente a processi di notificare all'utente le modifiche effettuate al canale di distribuzione.
    esempio:
    <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
  • ttl: acronimo di Time To Live, indica il tempo (in minuti) che il feed può essere tenuto in cache prima di effettuarne il refresh.
    esempio:
    <ttl>60</ttl>
  • image: è l’immagine del sito che distribuisce il feed RSS. Questo elemento, se dichiarato, ha alcuni elementi richiesti ed altri opzionali. (Vedi elementi di image)
  • item: è un singolo "oggetto di contenuto", ampiamente descritto dai suoi sottoelementi. Per esempio, potrebbe essere un post del proprio blog, oppure una novità del proprio sito. Chiaramente questo elemento può essere ripetuto più volte all'interno del documento. (Vedi elementi di item)

Sottoelementi di image richiesti:
  • title: titolo assegnato al logo del sito.
  • url: URL fisico del logo del sito.
  • link: indirizzo del sito web che distribuisce il feed RSS.
Sottoelementi di image opzionali:
  • width: larghezza dell'immagine associata al feed. Deve avere un valore compreso tra 1 e 144; di default è 88.
  • height: altezza dell'immagine associata la feed. Deve avere un valore compreso tra 1 e 400; di defualt è 31.
  • description: breve descrizione dell'immagine associata al feed.
esempio:
<image>

<title>PeppeDotNet.it</title>
<url>http://www.peppedotnet.it/img/logo.gif</url>
<link>http://www.peppedotnet.it</link>
<width>144</width>
<height>30</height>
<description>Logo PeppeDotNet.it</description>
</image>

Sottoelementi di item:
l'elemento item non ha elementi esplicitamente richiesti dalle specifiche, ma sarebbe meglio almento inserire gli elementi title, link e description, per cercare di dare un senso al contenuto che si vuole distribuire.
  • title: titolo dell'oggetto.

  • link: URL dell'oggetto.
  • description: descrizione del contenuto.
  • author: autore dell'oggetto. Deve rispettare le specifiche RFC 2822, come per gli elementi managingEditor e webMaster.
  • category: categoria di contenuti a cui l'oggetto appartiene.
  • pubDate: data di pubblicazione dell'oggetto. Anche questa data, deve rispettare le specifiche per la data e il tempo di RFC 822.
  • enclosure: descrive, se esiste, il tipo di file allegato all'oggetto. Questo elemento ha, però, tre attributi richiesti dalle specifiche: url(indirizzo dell’allegato), length(pesantezza file espressa in byte) e type(tipo di file; scelto dall'elenco dei MIME-Types standard).
  • source: l'URL del canale al quale l’oggetto è direttamente collegato, inserito nell'attributo url.
  • guid: un indirizzo che identifica univocamente l'oggetto(permalink).
esempio:

<item>

<title>I Feed RSS, versione 2.0</title>
<link>http://www.peppedotnet.it/articolo4.aspx</link>
<description>Specifiche della versione 2.0 del formato RSS</description>
<pubDate>Mon, 11 Dec 2004 17:30:00 EST</pubDate>
<author>info@peppedotnet.it (Marchi Giuseppe)</author>
<category>Articoli – XML</category>
<source url="http://www.peppedotnet.it/rss_art20.aspx" />
<enclosure url="http://www.peppedotnet.it/zip/source1.zip"
length="4345700" type="application/zip"
/>
<guid>http://www.peppedotnet.it/articolo4.aspx</guid>
</item>

Ecco un esempio di un feed RSS valido: http://www.peppedotnet.it/rss_art20.aspx

COME LEGGERE FEED RSS:
Per tenersi aggiornati circa gli aggiornamenti dei siti che più ci interessano (sempre che questi distribuiscano il proprio feed :), ci si può avvalere di programmi come:
- RssBandit
- SharpReader
- RssReader
Oppure, si può cercare di prelevarne il contenuto, in .NET, tramite l'uso della classe XmlTextReader.

COME CREARE FEED RSS:
Per creare un proprio feed RSS in .NET, ci si può avvalere di varie tecniche:
- Utilizzo della classe XmlDocument
- Scrittura via codice del feed e stampa all'interno dell'oggetto Response

Sia per la lettura, che per la scrittura di file RSS, vedremo esempi in seguito.
Io ho però creato una libreria di classi .NET, in modo tale da facilitare la scrittura e la lettura di file in formato RSS valido, scrivendo poche righe di codice (sia C# che VB.NET).
La libreria si chiama dotRSS, ed è alla versione 0.9.2.1 (Beta1 stabile) !
http://www.peppedotnet.it/dotRSS/

Link utili:
http://blogs.law.harvard.edu/tech/rss (Specifiche RSS 2.0)
http://www.w3.org/TR/REC-xml/ (Specifiche XML 1.0)
http://asg.web.cmu.edu/rfc/rfc822.html (Date and Time Specification of RFC 822)
http://www.faqs.org/rfcs/rfc2822.html (Specifiche RFC 2822)
http://feedvalidator.org/ (Validatore fedd RSS e Atom)
http://rss.scripting.com/ (Validatore RSS)
http://www.peppedotnet.it/dotRSS/ (Libreria di classi .NET per la gestione di Feed RSS validi)