RSS Feed im Eigenbau (1 / 2)

Seit einigen Tagen ist der Lautsprecher Besitzer eines gut funktionierenden RSS-Feeds. Klar, davor hab ich auch schon mit Feeds um mich geworfen, die 1 zu 1 von diversen Tutorials "insperiert" waren. Aber die Qualität ließ doch zu Wünschen übrig und so machte ich mich vor kurzem auf die Suche nach weiteren Anregungen und Ideen, um meinen RSS_Feed doch noch hier und da aufzufrischen und zu vervollständigen.
Und damit auch andere von meinen Erfahrungen profitieren, möchte ich in einer kleinen 2teiligen Serie Schritt für Schritt erklären, wie man sich einen vollständigen Feed selber baut.
Ein RSS-Feed ist im Grunde nichts anderes, als ein ganz normales XML-Dokument für welches einige gewisse "Parameter" schon vordefiniert sind. Ansonsten gilt es, wie immer für XML-Dokumente, auf die Wohlgeformtheit zu achten.
01 <?xml version=\"1.0\" encoding=\"utf-8\" ?> \n
02 <rss version="2.0"> \n
03
04 <channel> \n
05 <title>Titel des Feeds</title> \n
06 <link>URL der Webpräsenz</link> \n
07 <description>Kurze Beschreibung des Feeds</description> \n
08 <language>de-DE</language> \n
09 <copyright>Autor des Feeds</copyright> \n
10 <pubDate>Erstellungsdatum("Thr, 9 Oct 2008 14:00:00")</pubDate> \n
11 <item> \n
12 <title>Titel des Eintrags</title> \n
13 <description>Zusammenfassung des Eintrags</description> \n
14 <link>Link zum vollständigen Eintrag</link> \n
15 <author>Autor des Artikels, E-Mail-Adresse</author> \n
16 <category>Kategorie des Beitrages</category> \n
17 <guid>Eindeutige Identifikation des Eintrages</guid> \n
18 <pubDate>Datum des Items</pubDate> \n
19 </item> \n
20
21 <item> \n
22 ...
23 </item> \n
24
25 </channel> \n
26
27 </rss>

Code1: Grundlegener Aufbau eines RSS-Feeds

Laut Wikipedia ist das also der Aufbau eines RSS2.0-Feeds. Und wenn wir uns mit dem Minimalistischsten zufrieden geben, könnten wir hier eigentlich auch schon gleich aufhören. Tun wir aber nicht! Und darum gehen wir jetzt erst einmal Zeile um Zeile den Code durch:
01 <?xml version=\"1.0\" encoding=\"utf-8\" ?> \n
02 <rss version="2.0"> \n
03
04 <channel> \n
Das ist die Deklaration des Dokumentes. Hier legen wir den Dokumententyp (xml) sowie dessen Spezifikation (version=\"1.0\") und das Sprachformat (utf-8) fest. Weiterhin sagen wir ihm, dass das ganze ein RSS-Feed der Version 2.0 werden soll. Lasst euch im übrigen nicht von dem "\n" verwirren. Dieses ist nichts weiter als ein "erzwungener" Zeilenumbruch im Quelltext (damit auch der nachher schön aussieht). In Zeile 4 öffnen wir dann das eigentliche Dokument. Und da kommt schon wieder eine kleine Sache, die man beherzigen sollte: Der Channel Tag darf(!) nur einmal vorkommen.

Nun folgt der Header. Hierbei möchte ich mich auf die notwendigsten Eingaben beschränken.

05 <title>Titel des Feeds</title> \n
06 <link>URL der Webpräsenz</link> \n
07 <description>Kurze Beschreibung des Feeds</description> \n
08 <language>de-DE</language> \n
09 <copyright>Autor des Feeds</copyright> \n
10 <pubDate>Erstellungsdatum("Thr, 9 Oct 2008 14:00:00")</pubDate> \n

Dies sind die 6 Eingaben, die in jedem Fall vorhanden sein müssen. Ich denke, dass die Namen hier auch für sich sprechen. Etwas Tricky wird es nur bei der Zeitangabe. Diese muss in einem speziellen Format vorliegen (genauso und nicht anders wie in der Klammer). Wenn diese Konvention nicht eingehalten wird, gibt's keine Datumsangabe und es gibt ja nicht wenige, die sich unvollständige RSS-Feeds nicht anschauen. Mal abgesehen davon, dass wir ja auch einen Ruf zu verlieren haben. Mit diesem Problem werden wir uns unter anderem auch nochmals im zweiten Teils des Tutorials genauer befassen. Trotzdem noch ein letztes Wort dazu: viele nutzen im Header statt dem Tag <pubDate> viel eher den Tag <lastBuildDate> und schreiben dort das letzte Aktualisierungsdatum dort rein. Wir werden das in Zukunft genauso handhaben.
Als nächstes wollen wir endlich unseren Feed mit Inhalten füllen und dazu sind folgende Zeilen zuständig:
11 <item> \n
12 <title>Titel des Eintrags</title> \n
13 <description>Zusammenfassung des Eintrags</description> \n
14 <link>Link zum vollständigen Eintrag</link> \n
15 <author>Autor des Artikels, E-Mail-Adresse</author> \n
16 <category>Kategorie des Beitrages</category> \n
17 <guid>Eindeutige Identifikation des Eintrages</guid> \n
18 <pubDate>Datum des Items</pubDate> \n
19 </item> \n
Ich hatte ja schon weiter oben die Wohlgeformtheit angesprochen. Und hier schlägt sie nun voll zu. Jeder Beitrag wir zwischen den <item>...</item> Tags geschrieben. Sprich für jeden neuen Beitrag brauchen wir einen neuen <item> Tag, der durch weitere Tags genauestens Definiert ist. Halten wir die Reihenfolge der Tags nicht ein: nothing goes. also seid sorgsam.
Ansonsten sollten die Namen wieder für sich sprechen. Ein Beitrag zeichnet sich eine Überschrift, einen Text, einem Datum wann er veröffentlich wurde, einer ID, etc. aus. Und die können hier alle rein. Können ist deshalb makiert, weil ihr an diesem Punkt prinzipiell freie Hand habt, aber die Auflistung, wie sie hier ist, darf als durchaus brauchbar bezeichnen lassen.

Zum Schluss müssen wir natürlich noch die restlichen offenen Tags schließen:
25 </channel> \n
26
27 </rss>
In diesem Teil des Tutorials wollen wir auch erstmal gar nicht weitergehen, als unsere Beiträge hart reinzucodieren. Dynamisch machen wir das Ganze dann im nächsten Teil. Wir nehmen uns jetzt also erst einmal einen Artikel (den HTML Source Code des Artikels), packen ihn so wie er ist den Feed und speichern das ganze als "feed.rss" (oder ähnliches) ab.
Wenn wir nun in einem Feedreader (quasi jeder neue Browser bringt einen halbwegs brauchbaren Feedreader mit) unseren Feed öffnen, merken wir eines sehr schnell: Umbrüche, Links und so weiter funktionieren nicht. Keine Graphiken, Bilder: nix!
Sehr unschön die ganze Sache und auch nicht wirklich lesbar. Also brauchen wir einen kleinen "Trick" um uns wieder einen kleinen HTML Grundbefehlssatz zugänglich zu machen. Zu unserem Glück gibt es inzwischen eine offiziell erlaubte Methode um dies Grundbefehlssatz zu erhalten. Und das Ganze sieht so aus:

13 <description><![CDATA[Zusammenfassung<br>des<br>Eintrags]]></description> \n
Tja, das war es schon. Alleine durch <![CDATA[ werden unsere <br> Tags anerkannt und als Zeilenumbruch definiert. Also statt:

ZusammenfassungdesEintrages
sehen wir nun:
Zusammenfassung
des
Eintrages
Damit werden wieder textbeschreibende sowie Images- und Linktags übersetzt.

Nun ist es aber in den seltensten Fällen so, dass wir in unseren Feed hart reincodieren wollen. Viel spaßiger wäre es ja, die Inhalte direkt von einer Datenbank zu ziehen und uns nie wieder sorgen um unseren RSS-Feed machen zu müssen. Und dafür wird Teil 2 des Tutorials zuständig sein.

dieser Beitrag wurde aus dem Lautsprecher übernommen

Letzte Änderungen

GRUB2: Timer abschalten (starfiii, 31.Okt 09, 12:11)

Leider kein weiterer Artikel zu... (starfiii, 13.Mrz 09, 13:01)

Windows 7, Build 7000 (public Beta),... (starfiii, 22.Jan 09, 10:45)

Deadlinks und andere Peinlichkeiten (mwi, 22.Jan 09, 08:53)

Wie werde ich "Webdesigner"? (mwi, 21.Jan 09, 10:17)