Grundstruktur eines Atom-Dokuments

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

Das folgende Dokument enthält alle Elemente, die in jedem Atom-Feed vorkommen müssen, sofern er überhaupt Einträge enthält:

<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom">
   <title>Webtrends</title>
   <author>
      <name>Roswitha Celawi</name>
   </author>
   <updated>2005–04–15T08:15:48.428Z</updated>
   <link rel="alternate" href="http://www.celawi.com/webtrends.html"/>
   <entry>
      <title>Ask Jeeves jetzt auch in Spanien</title>
      <summary>Ask Jeeves startete am 5. April mit der Betaversion eines neuen Such-Service für Spanien. Es ist der erste von mehreren geplanten Starts in Europa dieses Jahr.</summary>
      <updated>2005–04–15T08:15:48.428Z</updated>
      <id>http://www.celawi.com/webtrends/20040415_01.html </id>
   </entry>
   <entry>
      <title>Bitkom-Studie: Paid Content in Deutschland erfolgreich</title>
      <summary>Kostenpflichtige Online-Inhalte werden immer besser angenommen: "Die Zeit der Kostenlos-Kultur geht zu Ende, gleichzeitig steigt die Qualität der Angebote", sagt Bernhard Rohleder, Hauptgeschäftsführer von Bitkom.</summary>
      <updated>2005–04–15T08:15:48.428Z</updated>
      <id>http://www.celawi.com/webtrends/20040415_02.html </id> 
   </entry>
</feed> 

Code-Beispiel: Einfaches Atom-Dokument

Der Atom-Namensraum und das Attribut xml:lang

Für Atom-Dokumente muss ein expliziter Namensraum angegeben werden. Meist wird atom als Präfix für den Namensraum benutzt. Der Namensraum für Atom 1.0 wird durch den URI "http://www.w3.org/2005/Atom" identifiziert.

Jedes Atom-Element kann das Attribut xml:lang tragen; es wird so verwendet, wie in der XML-Spezifikation definiert. (Die language tags zur Identifizierung der Sprachen enthält RFC 3066.) Nur bei einigen Elementen kann dieses Attribut sich auf die Verarbeitung auswirken. Diese Elemente werden in der Spezifikation ausdrücklich als "language-sensitive" bezeichnet. Bei allen anderen Elementen und Attributen spielt die Sprache keine Rolle; bei diesen Elementen muss man z. B. in einer relationalen Datenbank kein Feld für die Sprache reservieren.

Text-, Personen- und Datumskonstrukte

Für bestimmte Kombinationen von Sprachmitteln, die in einem Atom-Dokument an unterschiedlichen Positionen vorkommen können, werden in der Spezifikation sogenannte "Konstrukte" (Atom Constructs) definiert. Dadurch wird die Spezifikation verkürzt. Außerdem wird sichergestellt, dass dieselben Sprachelemente unabhängig von ihrem Kontext auch dieselbe Bedeutung haben. Das wichtigste und auch komplexeste dieser Konstrukte heißt "Text construct". Sie werden es auf der Seite über den Inhalt von Atom-Einträgen (siehe Content als Bürger erster Klasse) kennenlernen. Daneben gibt es Personen- und Datumskonstrukte.

Personenkonstrukte beschreiben Personen, aber auch Firmen und andere "juristische Personen". Zu einem Personenkonstrukt gehören obligatorisch ein Element name und optional Elemente für die E-Mail-Adresse und ein URI, in der Regel wohl der URI der Website einer Person. Sie können weitere Elemente zur Erweiterung enthalten.

Datumskonstrukte werden benutzt, um Zeitpunkte und Kalenderdaten anzugeben. Die Elemente, die diese Konstrukte als Inhalt verwenden, können die für alle Atom-Elemente möglichen Attribute besitzen; ihr Inhalt entspricht dem XML Schema-Datentyp dateTime.

Dieser Typ ist kompatibel mit ISO 8601 und der Empfehlung des W3C zu Datums- und Zeitangaben.

Siehe auch die Seite Atom-Konstrukte der Atom-Referenz.

feed und entry als strukturierende Elemente

Die folgende Abbildung zeigt die Struktur des Beispiel-Dokuments:

Struktur eines einfachen Atom-Dokuments

Abbildung: Struktur eines einfachen Atom-Dokuments

Zur Hierarchie eines Atom-Dokuments gehören zwei Ebenen. Damit unterscheidet Atom sich nicht von den übrigen wichtigen Vokabularen für Newsfeeds. feed ist das Dokument-Element eines Feeds. (Daneben erlaubt Atom auch entry als Dokument-Element, allerdings nur, wenn mit dem Atom API Websites aktualisiert werden sollen.) feed repräsentiert den Newsfeed als ganzen. Zusammen mit dem Attribut xmlns gibt es außerdem an, zu welchem Vokabular das Dokument gehört. Es übernimmt damit die Aufgaben der RSS-Dokument-Elemente rss oder RDF und des darauf folgenden Elements channel bzw. Channel. Bei diesen und bei anderen Namen ist die Kompatibilität mit RSS nicht mehr gewahrt. Atom kann also nur mit einer Software benutzt werden, die speziell für dieses Format entwickelt wurde - es handelt sich nicht um ein weiteres RSS-Format, sondern ist ein bewusster Neuansatz. Der URI des Namensraums informiert auch über die Version von Atom; feed benötigt deshalb kein Attribut version.

feed ist ein Container für die mit einem Feed assoziierten Daten und Metadaten. Nachkommen von feed sind Elemente, die den Newsfeed selbst beschreiben, und Elemente mit dem Namen entry. Die entry-Elemente stehen für die Einträge, die zu dem Feed gehören, sie bilden also den eigentlichen Inhalt. (Die Atom-Spezifikation lässt Feeds ohne Einträge zu; sie dürften in der Praxis allerdings sehr selten vorkommen. Nach oben ist die Anzahl der Einträge unbegrenzt.)

In dem Beispiel gibt es vier Elemente, die den ganzen Feed beschreiben, nämlich title, author, updated und link. Welche Bedeutung sie haben, sagt der englische Elementname:

  • title enthält den Titel des Newsfeeds.
  • author enthält Informationen über den Urheber.
  • updated bezeichnet das letzte Aktualisierungsdatum.
  • link verweist auf eine andere Version des Inhalts.

Diese vier Elemente sind als Nachkommen des Elements feed vorgeschrieben. Fehlen diese Informationen über den Feed, ist ein Atom-Dokument nicht valide!

title und updated müssen auch als Nachkommen von entry vorkommen.

Zusätzlich enthält entry die Elemente:

  • id mit einem URI, der den Eintrag eindeutig identifiziert, und
  • summary mit einem zusammenfassenden Text.

Die Atom-Spezifikation legt die Reihenfolge der Elemente, die Bestandteil der Elemente entry und feed sein können, nicht fest.

In seiner Grundstruktur weicht ein Atom-Dokument nicht sehr von den Dokumenten in den verschiedenen RSS-Formaten ab. Am deutlichsten unterscheiden sich die Elementnamen voneinander: An die Stelle von channel tritt feed, an die Stelle von item tritt entry. Der Name feed spiegelt wider, dass Newsfeeds inzwischen zu einer eigenen Form von Online-Publikationen geworden sind.

Bei Atom werden mehr Metadaten für jedes Dokument gefordert als bei den anderen Feed-Formaten. Dahinter steht das Interesse, nicht auf die Informationen zu verzichten, die in nahezu jedem praktischen Publikationszusammenhang erforderlich sind. (Ben Hammersley spricht in Building Applications with RSS, Atom and the Atom API von einem "Principle of Conservation of Metadata": "An Atom Document explicitly states the minimum we can know about the resource and no less".)

Bemerkenswert ist vor allem, dass der Autor eines Atom-Dokuments immer angegeben werden muss. Das Element author darf als Nachkomme von feed nur fehlen, wenn bei jedem einzelnen der Einträge ein Autor genannt ist. Dabei können hier auch Institutionen angegeben werden. Durch diese Vorschrift unterscheidet sich Atom von anderen Syndikationsformaten. Sie ist nicht technisch, sondern sozial motiviert: Es muss ein Verantwortlicher für jedes Dokument benannt werden können.

Eine weitere wichtige Eigenheit von Atom ist, dass zu jedem Eintrag ein Element id gehören muss, mit dessen Inhalt sich die Meldung eindeutig identifizieren lässt. Der Identifizierer des Elements und die Information über die letzte Aktualisierung zusammen erlauben es dann zu entscheiden, ob eine Meldung in einem Newsreader bereits in der aktuellen Form dargestellt worden ist oder nicht.

   

<< 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: