
Requisiti
Introduzione
Bene...eccoci qua insieme per capire cos'è lo standard RSS (in questo caso la versione 0.91). Diciamo che in linea di principio ha la stessa funzione dei bloggers, ossia la condivisione delle news. Il file contenente le news in formato rss non è altro che un file .xml che segue delle regole ben precise. A questo punto viene da chiederci: ma dove sono scritte stè regole? Semplice, in un file .dtd (Document Type Definition).
Un file .xml che oltre ad essere conforme alle regole dettate dal DTD deve anche essere conforme a tutti i limiti di validità identificati dalle specifiche relative all’XML (quindi tutti i tag di apertura e di chiusura devono corrispondere, tutti i valori degli attributi devono essere racchiusi tra virgolette, ecc... ecc...).
Ultimamente il formato rss (e blogger) si stà espandendo sempre di più perchè rende molto più semplice la condivisione delle news, infatti basta sapere l'indirizzo del file .xml e costruirsi un parser (in qualsiasi linguaggio) ed il gioco è fatto.
Comunque sia per scrivere e per leggere il formato rss, prima bisogna sapere come funziona; Ed è appunto per questo che ci dobbiamo studiare per bene il DTD relativo allo standars RSS 0.91.
Il DTD
Il link al file DTD lo trovate qua http://my.netscape.com/publish/formats/rss-0.91.dtd . Una volta aperto vi verrà spontaneo spegnere il monitor e lanciarlo contro il muro :) comunque se vi soffermate un minuto in più a leggerlo, vedrete che alla fine non è poi così difficile capirlo :)
Bene cominciamo subito a cercar di capire cosa cappero c'è scritto in questo file DTD :)
Questo non è altro che un commento nella quale ci sono le varie info su chi ha fatto il DTD (autore, copyright, info varie). In poche parole non ci serve ad una mazza leggere cosa c'è scritto all'interno del commento :)
Ora prendiamo in esame la prima riga che è molto semplice:
Possiamo notare che per la dichiarazione degli elementi viene utilizzato il tag "<!ELEMENT" alla quale corrisponde il tag di chiusura ">".
La sintassi generalizzata è la seguente:
In questo caso come nome dell'elemento è associato l'elemento "rss" mentre per il suo contenuto c'è "channel".
Ciò significa che all'interno dell'elemento "rss" ci deve essere un solo (obbligatorio) elemento "channel" (che sarà il nodo figlio di "rss"). Di conseguenza il nodo di root è "rss".
Ora con la seconda riga del DTD ci verranno imposte altre regole:
Bene...con il tag "<!ATTLIST" si definisce le regole per gli attributi (in questo caso gli attributi di rss).
La sintassi generalizzata è la seguente:
In questo caso come nome dell'elemento c'è "rss", come nome dell'attributo c'è "version", come tipo dell'attributo c'è "CDATA" e come valore di default c'è "#REQUIRED". Per dirla in parole povere questo tag dice che il tag "rss" deve per forza contenere l'attributo "version" del tipo "CDATA".
"CDATA" stà ad indicare che in questo attributo possono essere utilizzati solo dati in formato carattere. Mentre il valore di default "#REQUIRED" dice che in questo attributo deve essere specificato un valore (obbligatoriamente).
Il commento in questo caso ha un'importanza fondamentale infatti ci ricorda di inserire come valore dell'attributo la versione 0.91, ossia la versione che viene trattata da questo DTD.
Quindi ora siamo in grado di scrivere in formato RSS le prime due righe del nostro XML:
Ora la prossima riga è da paura :)
Come potete notare la sintassi è molto simile alla prima riga che abbiamo esaminato, con la sola differenza che compaiono alcuni simboli nuovi.
Studiamoci prima tutti questi simboletti strani altrimenti si rischia di impazzire ehehe:
Ora passiamo all'altro gruppo di simboletti (si inseriscono subito dopo il nome dell'elemento):
Bene ora possiamo capire la riga di prima....anzi no.... è meglio frammentarla :) Come vedete i simboli di pipe separono le varie alternative (in questo caso le alternative sono title , description, link, ecc...ecc... e sono tutte racchiuse tra le parentesi tonde). Ma se notate bene alla chiusura della parentesi c'è il simbolo "*" che significa che la scelta (la scelta delle alternative) può essere fatta più volte oppure mai. In poche parole il tag "channel" può non contenere alcun tag figlio.
Bene ora passiamo ad esaminare più attentamente ciò che stà all'interno delle parentesi (prendo solo alcuni tag). Come potete notare ci sono alcuni tag "strani", essi sono:
Per capire di più, è meglio fare un esempio XML del tag "channel" conforme allo standard RSS 0.91:
Come potete notare la scelta viene fatta più volte (le alternative sono contenute all'interno delle parentesi). Il tag "title" appare solo una volta (come language, link e description), il tag image è facoltativo (ossia può apparire solo una volta oppure mai) mentre il tag "item" può essere ripetuto più volte.
Bene, la parte difficile l'abbiamo fatta :) ora tutto ciò che spiegherò sarà molto più semplice :)
Ovviamente tutti i tag sono da definire (i tag "title", "description", "item", ecc...): in questo caso il contenuto del tag title è di tipo #PCDATA ossia l'elemento può contenere solo testo (quindi non può avere dei tag figli). Tutte le altre dichiarazione sono simili quindi mi sembra inutile spiegarle :) Passiamo a qualcosa di diverso:
Mmmm...alla fine non è molto diverso dal tag di prima :) Qua, come potete notare, la scelta può essere fatta più volte oppure mai, e le alternative sono "title", "url", "width", "height" e "description". Il punto di domanda stà a significare, come prima, che la scelta di quell'elemento può essere fatta una volta oppure mai.
I tag successivi sono simili quindi mi soffermo su uno leggermente diverso (alla fine sono tutti uguali eheheh):
Ciò stà a significare che il tag "skipDays" deve contenere uno o più tag "day".
Bene abbiamo quasi finito (visto che se avete capito tutto ciò che ho detto prima, riuscite anche a capire le altre righe del DTD). L'unica cosa che manca è la definizione delle entità (ossia di una sorta di parole riservate).
Prima di spiegare ecco la sintassi generalizzata:
Le entità servono per facilitare e rendere più "intuitiva" la lettura e la scrittura dell'xml. Nella riga presa in esame ogni volta che nell'xml viene fatto riferimento all'entità (in questo caso "½" ) quest'ultima verrà sostituita dal relativo contenuto ossia "½" che corrisponde alla frazione 1/2 (½).
Bene, ora in teoria leggendo un DTD riusciamo (dopo ovvi tentativi) a scrivere un XML ben formato che segua le regola da esso segnate.
Mi sa che questo tutorial ve lo dovete leggere come minimo un paio di volte per due motivi:
Mmm...mi manca qualcosa da dire? No, quindi vi saluto...bye bye
Daniele Simonin 3 September 2005 alle 11:12 Trackback URI
| M | T | W | T | F | S | S |
|---|---|---|---|---|---|---|
| « Feb | ||||||
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 | ||||
Scrivi un commento
Tags di formattazione:
Leggi l'unico commento presente fin'ora
Grazie davvero dell'ottimo post... ora non ho tempo di rileggerlo la seconda volta come consigliato, ma è già tra i miei segnalibri :D
GRAZIE!
Commento di MTB Vulture 17 December 2007 alle 15:05