Tim Tepaße: <guid>s

Beitrag lesen

Hallo,

Um nochmals auf <guid> zurück zu kommen: Wie könnte ich das lösen? Der Blog wird ja nur aus einer Seite bestehen, auf der alle Posts nach Aktualität nacheinander ausgegeben werden. <guid> ist für eine valide XML-File leider vorgeschrieben. (Oder täusche ich mich da?)

Für XML ist es nicht vorgeschrieben, weil XML so etwas nicht vorschreiben kann. Für RSS 2.0 auch nicht, es empfiehlt sich aber sehr. In Atom ist man aus schlechten Erfahrungen mit RSS klug geworden und schreibt eine <id> vor.

Genügt es, als <guid> die ohnehin für jeden Eintrag per auto_increment erzeugte id zu verwenden?

Im Prinzip kann man laut „RSS Spezifikation“ in <guid> reinschreiben, was man will. Sollte man aber nicht. Man sollte schon der Definition von GUID folgen, die da lautet „Global unique identifier“, d.h. etwas, das global, universell eindeutig und einzigartig ist. Warum?

Software, die Feeds liest, nimmt diese Dinger zum Identifizieren von einzelnen Einträgen. Bei vielen Feeds (Think: Google Reader) kommt es dann zu Doppelungen, ein Eintrag ist nicht mehr eindeutig identifiziert, d.h. man muss Krempel erfinden, um den Eintrag am Inhalt zu identifizieren. Und dann verbessert der Autor einen Tippfehler im Eintrag und das wird im Feed neu gepostet. Eigentlich ist der Eintrag logisch gesehen derselbe wie noch fünf Minuten vorher, aber der Inhalt hat sich verändert. Die GUID dient also dazu zu sagen, dass ein Eintrag in einem Feed derselbe ist. Autoren von Feedreadern finden so etwas sehr wichtig, weil es ihnen das Leben sehr viel einfacher macht. Wenn das jetzt zu schnell war: Ich hab vor längerem mal einen lngeren Beitrag geschrieben, der das Anhand eines Beispieles verdeutlicht.

Was nimmst Du jetzt als GUID? Was ist global eindeutig und einzigartig? Ein Vorschlag ist die URL des Beitrages, d.h. etwas wie http://example.org/blog/eintrag-1. Oder http://example.org/blog.php#eintrag-1 Hauptsache es ist eindeutig und ändert sich im Verlaufe der Zeit nicht.

Wenn Du kein Archiv der Einträge und demzufolge keine Permalinks hast, dann wird es etwas komplizierter. Wenn Du dann nicht darauf achten willst, dass Du GUIDs doppelt vergibst, dann nimm Tag URIs. Das sind keine richtigen HTTP-URLs, aber dennoch Bezeichner nach einem definiertem Schema, die zusätzlich den Vorteil haben, dass das Datum da hinein kodiert ist. Aber das driftet schon leicht in die esoterische Ecke ab.

Ansonsten noch drei Tips:
• Ich würde das RSS oder Atom entweder per Template oder per spezialisiertem Feed-Modul zusammenbauen. Das ist bequemer und weniger fehleranfälliger als das String-Zusammenfügen.
• Nicht vergessen, jede Änderung an der Programmlogik des Feeds solltest Du mit dem FeedValidator überprüfen und dessen Ratschläge befolgen.
• (Nicht ganz so wichtig: Ich würde Atom nehmen, es ist etwas striker definiert als RSS und insofern hat man da weniger Zweideutigkeiten und evtl. eine etwas bessere Unterstützung in anderer Software. Aber RSS geht auch.)

Tim