Version: GSB 7RSS-Feed
Was ist RSS?
RSS ist ein plattform-unabhängiges auf XML basierendes Format, entwickelt um Nachrichten und andere Web-Inhalte auszutauschen. Die Abkürzung RSS steht für "Really Simple Syndication" (oder auch für "Rich Site Summary" oder RDF Site Summary").
Im Gegensatz zu HTML-Seiten enthalten RSS-Dateien keine Design- und Layout-Elemente. So können RSS-Dateien plattformunabhängig gelesen und weiterverarbeitet werden.
Mit Hilfe eines RSS-Readers kann man RSS-Dateien lesen und so Änderungen einer Website verfolgen.
Aber auch eine Weiterverarbeitung durch Software ist möglich. So können Inhalte von RSS-Dateien auf Webseiten, Intranets oder Desktop-Software (z.B. in Bildschirmschonern o.ä.) beliebig dargestellt und gelesen werden.
Als Nutzer liegen die Vorteile von RSS vor allem in der Zeitersparnis: So ist es möglich Webseiten schnell und effektiv auf Änderungen und aktuelle Inhalte zu prüfen, ohne diese mitsamt Grafiken und Bannern direkt besuchen zu müssen. Gleichzeitig werden Traffic und Downloadzeiten vermieden.
Die Nutzung des Dienstes erfordert - anders als ein Newsletter - auch keine Anmeldung, bei der personenbezogene Daten bekannt gegeben werden müssen.
Grundsätzliche Konfigurationsmöglichkeiten
Das Generieren eines RSS-Feed wird im GSB mit dem Dokumenttyp FERssGenerator gesteuert.
Konfiguriert wird er über die folgenden Properties:
configPrefix
Prefix für die Config-Richtext-Dokumente mit den Property-Mappings (s. u.). Der Defaultwert ist "RSS".
rssVersion
Die verwendete RSS-Version. Der Defaultwert ist "1.0". Die konfigurierten Templates müssen dazu passen.
headerTemplate
Richtext-Property, deren Inhalt unverändert in den Header des generierten RSS ausgegeben wird (Pflichtfeld). Die Property muss daher gültiges und zur verwendeten RSS-Version passendes XML enthalten. Der Inhalt wird nicht geprüft!
itemTemplate
Richtext-Property, deren Inhalt mit ersetzten Variablen für jeden Eintrag des generierten RSS ausgegeben wird (Pflichtfeld). Die Variablen-Ersetzung erfolgt über einen Mechanismus, der unten näher erläutert wird.
cl2RelatedEnts mit dem Textclassifier Items
Enthält die darzustellenden LanguageEnt-Dokumente. FunctionalEnt-Objekte (wie DynDocSearchEnt-Objekte) werden intern in ihre Ergebnismenge aufgelöst.
Der Dokumenttyp FERssGenerator besitzt eine eigene main.jsp, welche direkt das benötigte XML ausliefert, da der übliche Mechanismus über NavNodes und NavTargets hier nicht notwendig ist. Daher ist es zum Abruf des RSS-Feeds möglich, direkt auf das FERssGenerator-Dokument per http aufzurufen, ohne eine spezielle View-Variante angeben zu müssen.
Beispiel für ein Header-Template
<syntaxhighlight lang="xml" enclose="div"> <title>Example News</title>
<link>http://rsshost.domain.example/</link>
<description>An RSS Feed.</description>
<language>en-us</language>
<copyright>Copyright 2004, Example company.</copyright>
<managingEditor>editor@domain.example</managingEditor>
<webMaster>webmaster@ domain.example</webMaster>
<category>Newspapers</category>
<generator>BundOnline CMS</generator>
<docs>http://rsshost.domain.example/tech/rss</docs>
<ttl>60</ttl> </syntaxhighlight>
Variablen-Ersetzung der Item-Templates
Das Item-Template kann frei wählbare Variablen der Form ${VARIABLENNAME} enthalten. Diese Variablen werden mit Hilfe eines rekursiven, im Verzeichnis des FERssGenerator-Dokuments startenden ConfigReaders auf Properties der jeweiligen Dokumente abgebildet. Welche Properties das sind, ist für jeden Dokumenttyp einzeln konfigurierbar, wobei die Property-Zuordnungen der Parent-Dokumenttypen geerbt werden.
Zunächst wird das Config-Dokument mit dem Namen des konfigurierten configPrefix (Defaultwert: RSS) ausgewertet. Anschließend werden weitere Config-Dokumente mit dem Namen ${configPrefix}_${docType} ausgewertet, deren Inhalt die bereits gelesenen Property-Zuordnungen überschreibt. Die Auswertung erfolgt anhand der Dokumenttyp-Hierarchie von LanguageEnt bis zum Dokumenttyp des gerade bearbeiteten Eintrags.
Die Property-Zuordnungen werden in Form von Key-Value-Paaren in ConfigRichText10-Dokumenten angegeben. Der Key ist der Name der im Template zu ersetzenden Variable. Der Wert ist der Name der Property, die für die Ersetzung ausgelesen werden soll. Wenn im Wert ein Punkt enthalten ist, wird der Bestandteil nach dem Punkt als Name eines Property-Templates angesehen, das intern gerendert wird. Ansonsten wird einfach der Plaintext des Property-Wertes eingesetzt.
Beispiele:
Im ConfigRichText10 mit dem Namen RSS steht im Feld Wert (value): <syntaxhighlight lang="xml" enclose="div"> TITLE=title
DESCRIPTION=teaserText
LINK=title.renderDocUri </syntaxhighlight>
Im ConfigRichText10 mit dem Namen RSS_Employee steht im Feld Wert (value): <syntaxhighlight lang="xml" enclose="div"> TITLE=name </syntaxhighlight>
Für alle Dokumente wird dann als DESCRIPTION die Property teaserText ausgewertet. Als TITLE wird bei Employees die Property name verwendet, bei den anderen Dokumenttypen jedoch die Property title. Als LINK wird für alle Dokumente das Property-Template renderDocUri.jsp für den title gerendert.
Im Item-Template können daher die Variablen TITLE, DESCRIPTION und LINK verwendet werden: <syntaxhighlight lang="xml" enclose="div"> <title>${TITLE}</title>
<link>${LINK}</link>
<description>${DESCRIPTION}</description> </syntaxhighlight>
Auf diese Weise können beliebige weitere Variablen deklarieren.
Content für die Standardlösung
Bei der Standardlösung wurden folgende Dokumente speziell für die RSS-Feed-Erzeugung angelegt:
/standardlsg/DE/Aktuelles/RSSNewsfeed/Function/rssnewsfeed
Dies ist ein FERssGenerator-Dokument. Das Header-Template entspricht der Version RSS 2.0. Das Item-Template rendert title, link und description. Als Items wird das DynDocSearchEnt der aktuellen Meldungen verlinkt.
/standardlsg/_config/RSS
Dieses ConfigRichText10-Dokument enthält Mappings für das RSS-Item-Template.
Parameter Wert (value):
TITLE=title
DESCRIPTION=teaserText
Abruf des RSS-Feeds Der RSS-Feed kann dann per http abgerufen werden mit der URL:
http://preview.standardlsg.domain.example/DE/Aktuelles/RSSNewsfeed/Function/rssnewsfeed.xml