Das Kernvokabular von RSS 1.0

(Auszug aus "Newsfeeds mit RSS und Atom" von Heinz Wittenbrink, erschienen bei Galileo Press, 2005)

Struktur

Man kann auch bei RSS 1.0 zwischen Elementen unterscheiden, die einen strukturierenden, und solchen, die einen beschreibenden Charakter haben. Diese Unterscheidung lässt sich hier sogar noch besser begründen als bei RSS 2.0 und seinen Vorgängerformaten, da die Semantik der Elemente klar definiert ist. Die Elemente, die eine strukturelle Funktion haben, repräsentieren in einem RDF-Graphen entweder Knoten (Ressourcen) oder Eigenschaften, deren Wert ein Knoten ist. Die beschreibenden Elemente stehen für Eigenschaften, deren Wert ein Literal, also eine Kette von Zeichen ist. Innerhalb des Kernvokabulars von RSS 1.0 gibt es davon genau drei, nämlich title, link und description.

Die Nachkommen des Dokument-Elements rdf:RDF sind ein Element channel und beliebig viele Elemente, mindestens aber ein Element des Typs item. Im Gegensatz zu RSS 2.0 können bei RSS 1.0 auch die Elemente image und textinput unmittelbare Nachkommen des Dokument-Elements seins. channel, item, image und textinput müssen jeweils ein Attribut des Typs rdf:about besitzen. Der Wert dieses Attributs ist der URI derjenigen Ressource, die durch das Element beschrieben wird.

Etwas weniger formell formuliert: channel, item, image und textinput stehen in einem RSS 1.0-Dokument für Gegenstände, die unabhängig von diesem Dokument existieren. Weil diese Gegenstände unabhängig von dem Dokument existieren, können sie mit einem URI identifiziert werden.

Im Web erlaubt es der URI, auf diese Gegenstände (es wäre aber auch möglich, dass es sich um Gegenstände außerhalb des Netzes handelt, etwa um physikalische Objekte) zuzugreifen, und zwar unabhängig von dem RSS-Dokument, das sie beschreibt. So kann man z. B. jeden der Einträge des Feeds über den URI beziehen, der bei ihm als Wert von rdf:about angegeben ist.

Die Nachkommen des Elements channel sind nur die Elemente link, description und items. Weitere Elementinhalte sind erlaubt, sie müssen dann aber anderen Namensräumen zugeordnet sein. Die Architektur des eigentlichen Dokuments, also dessen Gliederung in Informationen zu channel und item, die in ein Dokument-Element eingebettet sind, wird durch die Erweiterungen nicht verändert, die so als "externes Vokabular" gekennzeichnet sind.

RSS 1.0 richtet sich generell nach den Vorschriften von XML 1.0 und den XML-Namensräumen. Die Standardkodierung ist UTF-8. Zitiertes Markup muss durch Entity-Referenzen maskiert werden.

Die Reihenfolge der Elemente in einem RSS 1.0-Dokument spielt keine Rolle.

Das RSS 1.0-Element channel besitzt ein Attribut rdf:about, dessen Wert ein URI ist. Dieser URI kann der Wert des RSS-Dokuments selbst oder der beschriebenen Homepage sein. Hier ist RSS 1.0 also genau so ambivalent wie die andereren RSS-Versionen. Das Attribut rdf:about dient dazu, das Subjekt eines RDF-Statements zu identifizieren.

  • rdf:about
    Der Wert des Attributs rdf:about definiert den URI des Elements, das ihn enthält. Es bezeichnet das Subjekt der Statements, die sich aus RDF-Elementen innerhalb des Elements ableiten lassen. Die Elemente innerhalb eines Elements mit diesem Attribut werden als Beschreibungen des Elements interpretiert. Jede Ressource, die beschrieben wird, muss über dieses Attribut verfügen.
  • rdf:resource
    Dieses Attribut dient dazu, Ressourcen anzugeben, die als Werte von Eigenschaften innerhalb eines RDF-Dokuments fungieren. Es wird also immer verwendet, wenn auf eine Ressource zurückgegriffen wird, um den Wert einer Eigenschaft anzugeben.

Das Element rdf:RDF

Das Dokument-Element eines gültigen RSS 1.0-Dokuments hat den Namen RDF. Dieser Namen wird durch den URI "http://www.w3.org/1999/02/22-rdf-syntax-ns#" an den Namensraum des Resource Description Frameworks gebunden. Den Namensraum für die RSS-Elemente definiert der URI "http://purl.org/rss/1.0/".

Normalerweise beginnen RSS 1.0-Dokumente also wie das Beispieldokument mit:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/">

Die Regeln für XML-Namensräume erlauben es, auch ein anderes Präfix als rdf zu benutzen. In der RDF-Spezifikation wird jedoch empfohlen, dieses Präfix als normativ anzusehen, sodass das Partikel rdf im Zweifelsfalle auch als Bestandteil eines (dann lokalen) Bezeichners interpretiert werden kann. Damit ist RDF 1.0 zum einen mit RSS 0.9 kompatibel. Andererseits wird so sichergestellt, dass auch Programme, die den XML-Namensraum-Mechanismus nicht beherrschen, das Dokument verarbeiten können. Für solche Programme ist der Elementname rdf:RDF einfach ein gewöhnlicher Bezeichner, der (erlaubterweise) einen Doppelpunkt als Zeichen beinhaltet.

Unser Beispiel deklariert im ersten Element auch noch das Präfix dc. Es ist an einen dritten Namensraum gebunden, der für die so genannten Dublin Core-Elemente festgelegt wurde:

<rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">

Wenn die Namensräume in einem Dokument so deklariert werden wie in unserem Beispiel, bedeutet das, dass alle Elementnamen, die kein Präfix haben – bei denen sich also vor dem Namen nicht Buchstaben finden, die ein Doppelpunkt vom Rest des Namens trennt – als RSS 1.0-Elemente gelten. Bei allen Elementen, vor deren Namen rdf: steht, handelt es sich um RDF-Elemente. Auch Attribute können einzeln mit dem Präfix rdf ausgestattet werden und damit dem RDF-Namensraum zugeordnet werden – dies ist dann erforderlich, wenn das beherbergende Element selbst nicht in diesem Namensraum sein sollte. Dieses Dokument-Element besagt also, dass das in ihm eingeschlossene Dokument in drei XML-Vokabularen abgefasst ist.

Die Nachkommen von rdf:RDF, also channel, items, image und textinput, dürfen keine unmittelbaren Kind-Elemente enthalten, die sich wiederholen. Erst auf tieferen Stufen sind Wiederholungen möglich. Diese Einschränkung dient nur dazu, mit den (zum Zeitpunkt der Verabschiedung des Standards) vorhandenen Technologien RSS-Tripel zu konstruieren.

Zu rdf:RDF siehe auch die Seite rdf:RDF der RSS 1.0-Elemente-Referenz.

Das Element rss:channel

Das Element channel ist anders als bei RSS 2.0 kein Container für alle Daten des Dokuments. Es dient dazu, die Eigenschaften des Feeds als Ganzen zu beschreiben.

Das einzige Attribut, das die Spezifikation erfordert, ist rdf:about. Alle Top-Level-Elemente, also alle Elemente eines RSS 1.0-Dokuments, die Nachkommen von rdf:RDF sind, müssen dieses Attribut haben. Der Wert von rdf:about bei channel ist der URI des channel.

Der URI, der hier als Wert von rdf:about angegeben wird ("http://www.celawi.eu/webtrends/", siehe Beispieldokument unter Grundstruktur eines RSS 1.0-Dokuments), ist der Ausgangspunkt, um die Semantik aller weiteren Bestandteile eines RSS 1.0-Dokuments zu bestimmen. Er identifiziert den ersten Knoten des Graphen, den einen RSS-Parser aus dem Dokument konstruiert.

Im Sinne der RDF-Syntax handelt es sich bei channel um einen typisierten Knoten oder typed node. Das bedeutet, dass der Knoten eine Eigenschaft type hat, deren Wert channel ist. Man kann auch sagen: Von der Ressource, die der URI in rdf:about identifiziert, geht eine Kante für die Eigenschaft type aus, deren Endpunkt channel ist.

channel muss in jedem Fall die Elemente title, rss:link, description und items enthalten. Weitere durch Namensräume gekennzeichnete Unterelemente aus RSS 1.0-Modulen sind möglich.

Die Elementnamen title, link und description bezeichnen Eigenschaften der Ressource, die der URI in rdf:about identifiziert. Es handelt sich bei title, link und description um Eigenschaftselemente oder property elements. Die Regeln der RDF/XML-Syntax besagen, dass jene Elemente, die in ein Element eingeschlossen werden, das einen Subjektknoten beschreibt, Eigenschaftselemente sind.

Die Elemente description und link sind ebenfalls Eigenschaftselemente mit einem Literal als Wert. Anders beim Element items: Dieses Element ist zwar ebenfalls ein Eigenschaftselement, jedoch ist sein Wert kein Literal, sondern beschreibt eine Ressource.

Zu channel siehe auch die Seite rss:channel der RSS 1.0-Elemente-Referenz.

Das Element rss:items

Zu einem RSS 1.0-Dokument gehört zwingend immer ein Inhaltsverzeichnis auf der Ebene eines Channels. Dieses Inhaltsverzeichnis verknüpft den Channel mit den verschiedenen Items, die seinen Inhalt bilden, sowie optional mit einem Bild und einem Texteingabefeld. Ein RSS 1.0-Dokument enthält also explizit die Information, welche Teile zu einem Channnel gehören.

Das Element items enthält das Inhaltsverzeichnis. Sie haben bereits gesehen, dass es sich bei diesem Element in der RSS-Terminologie um ein Eigenschaftselement handelt. items verknüpft das Element channel mit den Einträgen, die den Inhalt des channel bilden.

Zu items siehe auch die Seite rss:items der RSS 1.0-Elemente-Referenz.

Das Element rdf:Seq

Der Inhalt von items ist eine Ressource des Typs rdf:Seq, die nicht durch einen URI identifiziert wird, sondern einen sogenannten blank node bildet. Jeder der einzelnen Einträge ist der Wert einer Eigenschaft dieser Sequenz, die man etwa mit "erstes Element", "zweites Element" usw. umschreiben kann. Im RDF-Graph haben diese Eigenschaften den Namen rdf:_1, rdf:_2 usw. Die Ordnung der Elemente ist also relevant, sie können nicht ohne Bedeutungsverlust umsortiert werden.

Zu rdf:Seq siehe auch die Seite rdf:Seq der RSS 1.0-Elemente-Referenz.

Das Element rdf:li

Die Elemente des Typs rdf:li haben ein Attribut rdf:resource, dessen Wert identisch mit dem Wert des Attributs rdf:about bei einem der item-Elemente innerhalb des Dokuments ist. Die Verwendung von rdf:resource erlaubt es, Statements über die jeweilige Ressource an einer anderen Stelle zu machen. Diese Statements finden sich innerhalb eines Elements item, das durch den Wert des Attributs rdf:about als eine Ressource identifiziert werden kann, die dem channel zugeordnet sind.

Zu rdf:li siehe auch die Seite rdf:li der RSS 1.0-Elemente-Referenz.

Das Element rss:image

Das Element image entspricht in seiner Funktion dem Element image bei RSS 2.0. Eine Größe wird nicht vorgegeben, die Spezifikation empfiehlt aber ein Format, das von der Mehrheit der Anwendungen unterstützt wird. Nachkommen sind die Elemente title, link und url. url gibt den URI des Bildes an. title wird für den Wert des Attributs alt verwendet, wenn ein RSS-Dokument in HTML konvertiert wird.

Wenn man in einem RSS1.0-Dokument ein Bild verwendet, muss man es auch innerhalb von channel aufführen. Dort ist es ein leeres Element mit einem Attribut rdf:resource. Der Wert dieses Attributs ist der URI des Bildes (also der URI, der bei dem Element image außerhalb von channel als Wert von rdf:about angegeben wird.)

Das Element image kommt also zweimal mit unterschiedlicher Funktion vor. Ich führe die Bedeutungen hier explizit auf, um noch einmal die Eigenheiten der RDF/XML-Syntax zu verdeutlichen: Als Nachkomme von channel ist es ein property element, dessen Wert die Ressource ist, deren URI in rdf:resource angegeben ist. Als Nachfolger von rdf:RDF gibt es an, dass dieselbe Ressource vom Typ image ist; hier dient das Element darüber hinaus als Container für die weiteren Eigenschaften des Bildes.

Zu image siehe auch die Seite rss:image der RSS 1.0-Elemente-Referenz.

Das Element rss:textinput

Das Element textinput soll hier nur der Vollständigkeit halber genannt werden. Es wird nicht mehr verwendet, bereits in RSS 1.1 kommt es nicht mehr vor.

Zu einem Element textinput gehören die beschreibenden Elemente title, link und description. Das Element name benennt hier (wie bei dem gleichnamigen HTML-Element) das Eingabefeld; es wird an ein CGI-Skript weitergegeben, das die Eingabe auswertet. Wie image müsste man textinput auch innerhalb von channel noch einmal aufführen, wenn man es tatsächlich verwenden wollte.

Das Element rss:item

Jedes item repräsentiert eine eigene Ressource und hat deshalb einen eigenen URI. item-Elemente sind typisierte Knoten; sie werden von einem Parser so interpretiert, wie Sie es eben bei dem Typ channel gesehen haben. In dem RDF-Graphen hängt der Parser die Statements, die sich auf eines der item-Elemente beziehen, an den jeweiligen Endknoten der Eigenschaften rdf_1, rdf_2 usw., die er aufgrund des Werts des Attributs rdf:resource konstruiert hat. Aus diesem Grund müssen die URIs der einzelnen item-Elemente identisch mit den URIs sein, die innerhalb der Elemente des Typs rdf:li angegeben werden.

Die Spezifikation sagt ausdrücklich, dass es sich bei einem Item um "so ziemlich alles" handeln kann: "With RSS 1.0's modular extensibility, this can be just about anything: discussion posting, job listing, software patch – any object with a URI." (siehe RSS 1.0-Module; zu item siehe auch die Seite rss:item der RSS 1.0-Elemente-Referenz).

Beschreibende Elemente

Die beschreibenden Kernelemente von RSS 1.0 haben dieselben lokalen Namen wie ihre Gegenstücke bei RSS 2.0: title, link und description. Es handelt sich um drei property elements – in einem RDF-Graph stehen sie für benannte Eigenschaften oder Prädikate. Der Wert jeder dieser Eigenschaften ist ein Literal – eine Zeichenkette, die die Ressource beschreibt, zu der die jeweilige Eigenschaft gehört. Alle Subjektknoten mit einem eigenen URI, also Knoten der Typen channel, item, image und textinput haben die Eigenschaften title und link; chanel, item und textinput darüber hinaus auch die Eigenschaft description. image hat auch hier die Eigenschaft url.

Das Element rss:link

Das Element link ist ein Nachkomme von channel und item, image und textinput. Es enthält einen URI. Wenn das RSS-Dokument in ein HTML-Dokument transformiert wird, gibt dieser URI das Ziel eines Links an. Ausgangspunkt des Links ist in der Regel der Inhalt von title. Bei einem Bild wird die Datei als Ausgangspunkt benutzt, deren Adresse im URL angegeben wird.

Der Inhalt von Link ist nicht zwingend mit dem URI identisch, der als Wert des Attributs rdf:about bei dem Element channel oder item angegeben wird. Die Spezifikation empfiehlt aber, bei item denselben URI zu verwenden, und in der Praxis wird auch meist so verfahren.

Um mit RSS 0.9 kompatibel zu sein, beschränkt die Spezifikation die Länge des Inhalts von link auf 500 Zeichen.

Zu link siehe auch die Seite rss:link der RSS 1.0-Elemente-Referenz.

Das Element rss:title

Das Element title wird bei RSS 1.0 genauso verwendet wie bei RSS 2.0: Es enthält den Titel des Feeds, eines einzelnen Items oder aber eines Bildes oder Texteingabe-Feldes. RSS 1.0 empfiehlt dabei – als Erbe älterer RSS-Versionen – eine Begrenzung des Umfangs auf 40 Zeichen bei dem Titel eines channel und auf 100 Zeichen bei dem Titel eines item. Markup ist innerhalb dieses Elements strikt verboten!

Ein Parser, der das RDF-Schema versteht, auf das der Namensraum-URI verweist, kann erkennen, dass es sich bei title um eine Spezifizierung des Elements title aus dem Dublin Core-Metadaten-Vokabular handelt. In dem Graphen, den der Parser konstruiert, kann er das Eigenschaftselement title durch dc:title ersetzen.

Zu title siehe auch die Seite rss:title der RSS 1.0-Elemente-Referenz.

Das Element rss:description

description enthält die Beschreibung des channel oder item. Auch der Wert von description ist ein Literal, also eine Zeichenkette. Dieses Element darf keine Nachkommen haben und also auch auf keinen Fall HTML-Markup enthalten. (Wenn man HTML-Markup in ein RSS 1.0-Dokument einfügen will, muss man hierfür das Content-Modul verwenden.) Als maximale Länge werden 500 Zeichen empfohlen. description ist wie title als Teilmenge oder "subproperty" von description definiert.

Zu description siehe auch die Seite rss:description der RSS 1.0-Elemente-Referenz.

   

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Newsfeeds mit RSS und Atom bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: