Tim Tepaße: rss - xml: wie mache ich das richtig valid?

Beitrag lesen

Hallo Rolf,

http://rolfrost.de/cgi-bin/rssfeed.cgi

Ein paar Kritikpunkte, Tips und Anmerkungen dazu:

  • Keine Charset-Angabe in den HTTP-Headern

  • Whitespace vor der XML-Deklaration

  • Der Namensraum „content“ wurde nicht angegeben, dies könntest Du bequemerweise einfach in das rss-Element packen: <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">

  • Du verwendest im Namensraum „content“ ein Element namens „encode“. Solltest Du wirklich das gerade von mir deklarierte RSS 1.0 Modul „Content“ meinen, heisst das betreffende Element „encoded“. Beachte bitte auch, dass RSS 1.0 und RSS 2.0 ausser dem Daseinszweck in der Syntax eher weniger miteinander zu tun haben.

  • Die RSS 2.0 Spezifikation gibt in der ihr eigenen Schwabbeligkeit natürlich keine Schema für die XML-Struktur vor. Die verbreitete Praxis im Web seit einigen Jahren ist jedoch, das Element „description“ nur für Text beziehungsweise mit CDATA oder Entities kodierten Text zu nutzen. Tatsächlich platzieren alle mir bekannten Feeds, die aus was für Gründen auch immer das RSS 1.0 Modul Content in ihren RSS 2.0 Feed einbinden, das Element „content:encoded“  als direktes Kindelement von „item“, oft zusätzlich zum „description“-Element. Ich würde „content:encoded“ auf keinen Fall als Kindelement des Elementes„description“ positionieren, das ist einfach zu fehlerprovozierend.

  • Ich an Deiner Stelle würde eh ganz auf das RSS 1.0 Modul „Content“ verzichten, Herr Winer gibt selbst einige Beispiele, wie man HTML-Content innerhalb des Elementes „description“ kodieren kann. Ich würde an Deiner Stelle Beispiel 2 verwenden, das ist relativ der Gedankenwelt von XML nahe, außerdem setzen wir diese Methode hier im Forum mit Erfolg ein.

  • Solltest Du in den Titeln Deiner Blogeinträge auch HTML Elemente oder entity-kodierte-Zeichen außerhalb des Bereiches von Latin 1 einsetzen, empfiehlt es sich, den Inhalt ebenfalls mit der CDATA-Methode zu kodieren.

  • In allen „link“-Elementen Deines Feedes setzt Du dieselbe URL ein, ich hoffe, das ist nur ein Flüchtigkeitsfehler der Entwicklungsversion. Was bringt es mir, wenn ich in meinem RSS-Reader sehe, dass Du wieder was Neues geblogt hast, auf Enter haue und mir in meinem Browser dieselbe Seite angezeigt wird?

  • Best Practise ist es, es dem RSS-Readern so leicht wie möglich zu machen. Du solltest dringend erwägen, deswegen das Element „guid“ mit aufzunehmen, damit RSS-Reader geupdatete oder modifizierte Items im neu gezogenen RSS-Feed mit bereits archivierten Items abgleichen können. Solltest Du für Deine Blogeinträge eindeutige, sich nicht ändernde URLs haben, böte es sich an, diese zu verwenden, in diesem Fall solltest Du das Element „guid“ mit dem Attribut „isPermaLink“ mit dem Wert „true“ ausstatten.

  • Du verwendest als Inhalt des Elementes „pubDate“ in Deinem derzeitigen Feed offenbar einen Unix-Timestamp. Dies ist falsch. Die RSS 2.0 Spezifikation sagt eindeutig, dass der Inhalt ein Datum nach RFC 822 sein sollte, also wie in E-Mails.

  • (Ich selber würde eher das Format Atom 1.0 nutzen, das ist nicht so schwabbelig wie RSS 2.0, meiner Meinung nach durchdachter und dürfte von den meisten Feed Parsern inzwischen verstanden werden, wenn diese mit dem Lauf der Zeit mitgehalten haben.)

Tim