RSS-Feeds von EUR-Lex auslesen

Wer sich als Nutzer auf EUR-Lex registrieren lässt, kann die Ergebnisse von Recherchen als RSS-Feed speichern. Diese Feeds können mit Feedreadern abonniert  werden. Sie können aber auch als Grundlage für ein eigenständiges Informationsangebot, beispielsweise einen Profildienst, genutzt werden.

Wie der Feed mit PHP ausgelesen und als HTML-Seite ausgegeben werden kann, zeigt das folgende Skript.

<!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>EUR-Lex RSS</title>

<style type='text/css'>

body {
margin-left: 15%;
margin-right: 25%;
font-family: Sans-Serif, Arial;
color:#494949;
font-size: 12px;
}

ol {
margin-left: 4px;
margin-top: 1px;
margin-bottom: 1px;
} 

li {
margin-top: 2px;
margin-bottom: 13px;
border-bottom: 1px dotted #222222;
padding: 19px;
font-size: 12px;
}

a:link.bib {
color:#494949;
text-decoration:none;
font-family: Sans-Serif, Arial;
}

a:visited.bib {
color:#494949;
text-decoration:none;
font-family: Sans-Serif, Arial;
}

a:hover.bib {
color:#FF0000;
text-decoration:none;
font-family: Sans-Serif, Arial;
}
</style>
</head>

<body>

<?php 

// Hier werden die URLs der RSS-Feeds eingetragen

// Agrarförderung
$url0='http://eur-lex.europa.eu/DE/display-feed.rss?myRssId=6hIgTUOAZNsAZUDkeYrwkw%3D%3D';

// Tierschutz
$url1='http://eur-lex.europa.eu/DE/display-feed.rss?myRssId=6hIgTUOAZNvLFxv%2Bo0iRQg%3D%3D';

if($_GET["url"] == "url0") {
    $url = $url0;
    $headline = "<h1>Agrarförderung</h1>";
    }

if($_GET["url"] == "url1") {
   $url = $url1;
   $headline = "<h1>Tierschutz</h1>";
   }

$feed_content = file_get_contents($url);

echo $headline. 'Diese Anfrage abonnieren: '. '<a href="'. $url. '" target="_blank">'. 'RSS-Feed</a>';

// XML DOM-Parser
$dom = new DOMDocument();
$dom->loadXML($feed_content);

echo "<ol>";

// Finde Datensätze
$items = $dom -> getElementsByTagName('item'); 

$i=0;

foreach ($items as $item) {

// Anzahl der Einträge begrenzen
	if ($i >= 10) {
        break;
        }

// Titel ausgeben, CELEX-Nummer fett
$titles = $item -> getElementsByTagName('title');
	foreach ($titles as $title){
   	$title = $title -> nodeValue;
   	$title = preg_replace ('/^(CELEX.{12})/', '<b><font color="#333333">$1</font></b>',  $title);
   	}

// Link auf die deutschsprachige Fassung ausgeben
$links = $item -> getElementsByTagName('link');
	foreach ($links as $link){
   	$link = $link -> nodeValue;
   	$link = preg_replace ('/AUTO/', 'DE/TXT',  $link);
  	}

$authors = $item -> getElementsByTagName('author');
	foreach ($authors as $author){
     	$author = $author -> nodeValue;
     	}

// Datum wird umgewandelt
$pubdates = $item -> getElementsByTagName('pubDate');
	foreach ($pubdates as $pubdate){
     	$pubdate = $pubdate -> nodeValue;
     	$pubdate = strtotime($pubdate);
     	$pubdate = date("d.m.Y", $pubdate);
  	}

// Ausgabe
echo '<li><a class='. '"bib"'. 'target="_blank"'. 'href="'. $link. '">'. $title. '</a>'. '<br /><br />Veröffentlicht am:<b> '. $pubdate. '</b>; &nbsp;Urheber: '. $author. '</li>';
 $i++;
}
echo "</ol></body></html>";
?>
Advertisements

Zeitschriftenverzeichnis via SRU

„Welche Zeitschriften hat die Bibliothek abonniert?“ Diese Frage stellen neue Bibliotheksnutzer meist als eine der ersten, wenn sie das Informationsangebot einer Bibliothek kennenlernen wollen. Wer sich über aktuelle Entwicklungen innerhalb seines Fachgebietes auf dem Laufenden halten will, greift auf Fachzeitschriften zurück, da diese noch immer zu den  wichtigsten Informationsquellen zählen. Für viele elektronische Zeitschriften gilt das wegen ihrer jederzeitigen Verfügbarkeit sogar in besonderem Maße.

Funktionen eines Zeitschriftenverzeichnisses

Damit sich potenzielle Leser schnell einen Überblick über die für sie relevanten Zeitschriften verschaffen können, bieten viele Bibliotheken neben ihren Onlinekatalogen separate Zeitschriftenverzeichnisse an, die nicht nur eine alphabetische, sondern häufig auch eine thematische Übersicht ermöglichen. In Behördenbibliotheken orientiert sich diese praktischerweise an den Aufgaben der Behörde.

Auch über die Nutzungsmöglichkeiten informiert das Zeitschriftenverzeichnis: handelt es sich um eine gedruckte Ausgabe, die im Umlauf bezogen werden kann oder um eine elektronische Zeitschrift, bei deren Nutzung besondere Lizenzbedingungen zu beachten sind? Über die jeweiligen Lizenz- und Nutzungsrechte gibt beispielsweise eine durch die Elektronische Zeitschriftenbibliothek (EZB) generierte Liste detailliert Auskunft.

Noch informativer sind Zeitschriftenverzeichnisse, die zusätzlich zu einzelnen Zeitschriftentiteln deren aktuelle Inhaltsverzeichnisse anzeigen, so  dass sich der Leser vorab informieren und evtl. gezielt einzelne Aufsätze bestellen kann.

Manuelle Bearbeitung vs. Schnittstelle

In manchen Bibliotheken werden Zeitschriftenlisten (semi-)manuell erstellt und als HTML-Seiten oder PDF-Dokumente zugänglich gemacht. Die Nachteile der manuellen Bearbeitung liegen auf der Hand: Daten müssen doppelt eingegeben und korrigiert werden. Da sich Zeitschriftendaten häufig ändern, kann der Aufwand zur Aktualisierung sehr hoch sein. Der Vorteil einer manuellen Bearbeitung liegt dagegen in der Möglichkeit, das Verzeichnis vollkommen individuell gestalten zu können.

Wird die Liste über eine Schnittstelle direkt aus der Katalogdatenbank heraus erzeugt, entfällt natürlich der Aufwand zur Aktualisierung. Individuelle Anpassungen sind allerdings nur möglich, wenn die Liste manuell nachbearbeitet werden.

SRU-Schnittstelle des GBV

Im Folgenden wird beschrieben, wie mit Hilfe der SRU-Schnittstelle (SRU = Search/Retrieve via URL) ein Zeitschriftenverzeichnis generiert werden kann, das gedruckte und elektronische Ausgaben gleichermaßen umfasst. Über die Anzeige der Zeitschriftendaten hinaus weist es  folgende Funktionen auf:

  • Umlaufbestellung per vorformulierter E-Mail
  • Anzeige eines Inhaltsverzeichnisses (sofern im GBV vorhanden)
  • Verlinkung auf die EZB

Die Schnittstelle erlaubt es, Daten aus verschiedenen Datenbanken auszulesen und in unterschiedlichen Formaten auszugeben. 

Datenbankabfrage

Mit folgendem URL (s.u.) kann im ANB-Katalog via SRU recherchiert werden. Die Ergebnismenge lässt sich durch diverse Parameter (Zahl der angezeigten Titel, Sortierung, Suchschlüssel etc.) beeinflussen.

http://sru.gbv.de/opac-de-616?version=1.1&operation=searchRetrieve&query=pica.lsg=ZZM05.00.00.00&maximumRecords=55&sortKeys=title,,1&recordSchema=turbomarc

Anmerkungen zu einzelnen Parametern

  • opac-de-616 (Schlüssel für den ANB-Katalog)
  • pica.lsg (Suchschlüssel für eine lokale Systematik, der nach Absprache mit der Verbundzentrale eingerichtet wurde.) Hier evtl. andere Suchschlüssel verwenden: pica.all, pica.tit ….) s. Liste 
  • recordSchema=turbomarc (Datenformat: turbomarc ist umfangreich und enthält die Bestandsdaten. Man kann zunächst einfache Formate ausprobieren, z.B. recordSchema=dc [Dublin Core])
  • sortKeys=title,,1 (Sortierung nach Titeln, alphabetisch absteigend)

Auslesen der Daten

Die Daten werden durch ein PHP-Skript (s.u.) mit Hilfe des DOM-Parsers ausgelesen und als HTML-Seite angezeigt. Dem Skript wird als Variable die Notation der Systematik übergeben, so dass es flexibel einsetzbar ist.

http://www.ahb.niedersachsen.de/sru/ahbzs_parser.php?notation=ZZM05.04.00.00

Präsentation des Verzeichnisses

Das Verzeichnis besteht aus einer  HTML-Seite mit einem Auswahlmenü und dem PHP-Skript, welches zu den einzelnen Menüpunkten mit der jeweiligen Notation aufgerufen wird. Für das Verzeichnis werden die Javascript-Bibliotheken von  jQuery und jQuery UI genutzt.

Zeitschriftenverzeichnis:
http://www.ahb.niedersachsen.de/sru/ahbzs.htm

Folgendes ist bei der Verwendung des Skripts zu beachten:

  • Der Umlaufbutton wird nur dann erzeugt, wenn die lokale Bestandsangabe (Kat. 7121) offen ist, also ein „-“ am Ende steht.
  • Der Onlinebutton wird erzeugt, wenn eine Onlineausgabe vorhanden ist oder wenn parallel zur nachgewiesenen Printausgabe eine Onlineausgabe existiert.
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Zeitschriftenverzeichnis</title>

<style type='text/css'>
body {
font-family: Sans-Serif, Arial;
font-size: 12px;
}

ol {
margin-left: 4px;
margin-top: 1px;
margin-bottom: 1px;
}

li {
margin-top: 2px;
margin-bottom: 13px;
border-bottom: 1px dotted #222222;
padding: 19px;
font-size: 12px;
}

a:link.bib { border: 1px solid silver; border-color: #BFBFBF; padding: 3px; border-radius:3px;  background-color: #F6F6F6; color:#494949; text-decoration:none; font-family: Sans-Serif, Arial;}
a:visited.bib { border: 1px solid silver; border-color: #BFBFBF; padding: 3px; border-radius:3px;  background-color: #F6F6F6; color:#494949; text-decoration:none; font-family: Sans-Serif, Arial;}
a:hover.bib { border: 1px solid silver; border-color: #BFBFBF; padding: 3px; border-radius:3px;  background-color: #C8C8C8; color:#494949; text-decoration:none; font-family: Sans-Serif, Arial;}

a:link { color:#494949; text-decoration:none; font-family: Sans-Serif, Arial;}
a:visited { color:#494949; text-decoration:none; font-family: Sans-Serif, Arial;}
a:active { color:#494949; text-decoration:none; font-family: Sans-Serif, Arial;}
a:hover { color:#FF7F00;text-decoration:underline; font-family: Sans-Serif, Arial;}

  h2 {margin-bottom: 2px; color: #69B577; font-size: 18pt;}
  h3 {margin-top: 25px; margin-bottom: 1px; margin-left: 60px; color: rgb(120,120,120); font-size: 12pt; font-weight: bold;}
  h4 {margin-top: 2px; margin-bottom: 1px; color: rgb(120,120,120); font-size: 10pt; font-weight: normal;}
  h5 {margin-top: 1px; margin-bottom: 2px; color: rgb(120,120,120); font-size: 12pt;}
</style>

</head>
<body>

<?php

$anzeige = $_GET["notation"];

if($anzeige == "ZZM05.*") {
echo "<h3>Zeitschriften</h3>";
	}
if($anzeige == "ZZM05.00.00.00") {
echo "<h3>Gesetzblätter</h3>";
	}
if($anzeige == "ZZM05.00.01.00") {
echo "<h3>Recht, Allgemeines</h3>";
	}
// ...
// Hier folgen evtl. weitere Ersetzungen.

// Ohne Proxy
$url='http://sru.gbv.de/opac-de-616?version=1.1&operation=searchRetrieve&query=pica.lsg%3D'.  $_GET["notation"]. '*&maximumRecords=55&sortKeys=title,,1&recordSchema=turbomarc';

// Einlesen der Ergebnismenge in eine Variable
$code = @file_get_contents($url);

// XML DOM-Parser
$dom = new DOMDocument();
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($code);

// Pfad im DOM
// zs:record -> zs:recordData  -> r -> d245 -> sa -> Inhalt/Text

echo "<ol>";
$i=0;
// zs:record zs = namespace record = tag; zs: weglassen
$records = $dom -> getElementsByTagName('record'); // Finde Datensaetze

foreach ($records as $record) {

$items = $record->getElementsByTagName('d245');

foreach ($items as $item) {
   $sa = $item -> getElementsByTagName('sa');
   $titel = $sa -> item(0)-> nodeValue;
   $titel = preg_replace('/[:=]/', ' ', $titel);
   $sb = $item -> getElementsByTagName('sb');
   $titel_zusatz = $sb -> item(0) -> nodeValue;
   $titel_zusatz = preg_replace('/[\/]/', ' ', $titel_zusatz);
   $sc = $item -> getElementsByTagName('sc');
   $hrsg = $sc -> item(0)-> nodeValue;
   $hrsg = preg_replace('/hrsg/i', '', $hrsg);
   $hrsg = preg_replace('/[\.:]/', '', $hrsg);
}

$items = $record -> getElementsByTagName('d260');

foreach ($items as $item) {
   $sa = $item -> getElementsByTagName('sa');
   $ort = $sa -> item(0)-> nodeValue;
   $ort = preg_replace('/[;]/', '; ', $ort);
   $sb = $item -> getElementsByTagName('sb');
   $verlag = $sb -> item(0)-> nodeValue;
   $sc = $item -> getElementsByTagName('sc');
   $zeitraum = $sc -> item(0) -> nodeValue;
 }

// Fortsetzung
unset ($forts);
$items = $record -> getElementsByTagName('d785');
foreach ($items as $item) {
   $si = $item -> getElementsByTagName('si');
   $fort = $si -> item(0) -> nodeValue;
   $st = $item -> getElementsByTagName('st');
   $fort_tit = $st -> item(0) -> nodeValue;
         if (preg_match ("/Forts\./i", $fort)) {
          $forts = $fort_tit;
          }
    }

// Vorgänger
unset ($vorg);
$items = $record -> getElementsByTagName('d780');
foreach ($items as $item) {
   $si = $item -> getElementsByTagName('si');
   $vor = $si -> item(0) -> nodeValue;
   $st = $item -> getElementsByTagName('st');
   $vorg_tit = $st -> item(0) -> nodeValue;
         if (preg_match ("/Vorg\./i", $vor)) {
          $vorg = $vorg_tit;
           }
     }

$items = $record -> getElementsByTagName('d362');

foreach ($items as $item) {
	 $sa = $item -> getElementsByTagName('sa');
   $erscheinungszeitraum = $sa -> item(0) -> nodeValue;
  }

// Swets - Vermerk fuer Inhaltsverzeichnis
  unset($swets);
  $items = $record -> getElementsByTagName('d024');

  foreach ($items as $item) {
   $s2 = $item -> getElementsByTagName('s2');
   $swets = $s2 -> item(0) -> nodeValue;
   }

// OLC-SSG - Vermerk fuer Inhaltsverzeichnis
unset($olcssg);
$items = $record->getElementsByTagName('d084');

  foreach ($items as $item) {
   $s2 = $item -> getElementsByTagName('s2');
   $olcssg = $s2 -> item(0) -> nodeValue;
   }

// Bestandsangabe

unset($einzelbestand);
unset($bestand);
unset($kennung);
unset($umlauf_button);

 $items = $record -> getElementsByTagName('d954');

foreach ($items as $item) {

// sd ist mehrfach belegt, signatur steht im ersten eintrag
   $d954_sd = $item -> getElementsByTagName('sd');
	 $signatur = $d954_sd -> item(0) -> nodeValue;

   $d954_sg = $item -> getElementsByTagName('sg');
	 foreach ($d954_sg as $eb) {
    $einzelbestand = $eb -> nodeValue;
   }

	$d954_sk = $item -> getElementsByTagName('sk');
	foreach ($d954_sk as $sk) {
    $best_komm = $sk -> nodeValue;
   }

  $d954_sx = $item -> getElementsByTagName('sx');
	foreach ($d954_sx as $kenn) {
	 $kennung = $kenn -> nodeValue;
   }

	if($kennung == "3235/005" && !empty($einzelbestand)) {
	$bestand = $einzelbestand;
	$bestand = preg_replace('/Bestand:/','', $bestand);
	$signatur_ml = $signatur;
  }

  if(preg_match('/Online/', $signatur_ml)) {
		$umlauf_button = "Umlaufbutton";
	  }
   }

// EZB-Link
unset($ezb);
unset($ezb_test);
unset ($online_button1);

$items = $record -> getElementsByTagName('d856');

foreach ($items as $item) {

$d856_su = $item -> getElementsByTagName('su');
	foreach ($d856_su as $ezblink) {
   $ezb_test = $ezblink -> nodeValue;
  }
    if(preg_match("/www\.bibliothek\.uni-regensburg\.de/", $ezb_test)){
      $ezb = $ezb_test;

  $online_button1 = '&nbsp;&nbsp;&nbsp;<a class="bib" href="'. $ezb. '&bibid=MLN"'. ' target="_blank" title="Falls für das ML lizenziert: Zugang zum Volltext via Elektronische Zeitschriftenbibliothek">Online</a>';
     }
    }

// ISSN
$items = $record->getElementsByTagName('d022');

foreach ($items as $item) {
	 $sa = $item -> getElementsByTagName('sa');
   $issn = $sa -> item(0) -> nodeValue;

   if (preg_match ("/autorisierte/", $issn)){
      $issn_autorisiert = $issn;
      $issn_autorisiert = preg_replace('/\(autorisierte ISSN\)/', '', $issn_autorisiert);
  }
}

// ZDB-Nr. für EZB-Link, falls Online-Ausgabe
unset($zdb);
unset($onl1);
unset($onl);
unset ($online_button2);

$items = $record->getElementsByTagName('d787');

foreach ($items as $item) {
	 $sw = $item -> getElementsByTagName('sw');
	 $si = $item -> getElementsByTagName('si');
   $zdb = $sw -> item(0) -> nodeValue;
   $zdb = preg_replace('/\(.*\)/', '', $zdb);
   $zdb = preg_replace('/\-.*/', '', $zdb);
   $zdb = preg_replace('/(\d{7}).*/', '$1', $zdb);

   $onl1 = $si -> item(0) -> nodeValue;
      if (preg_match ("/Online-Ausg/i", $onl1)) {
    onl = $onl1;
   $online_button2 = '&nbsp;&nbsp;&nbsp;<a class="bib" href="http://ezb.uni-regensburg.de/?'. $zdb. '&bibid=MLN"'. ' target="_blank" title="Falls für das ML lizenziert: Zugang zum Volltext via Elektronische Zeitschriftenbibliothek">Online</a>';
  }
 }

$items = $record->getElementsByTagName('c001');
$ppn = $items->item(0)-> nodeValue;

// Ausgabe
echo '<li><b><a href="http://gso.gbv.de/DB=9.235//PPNSET?PPN='. $ppn. '" target="_blank">'. $titel. '</a></b>';

    if (!empty($titel_zusatz)) {
        echo " <br />". $titel_zusatz;
     }

    if (!empty($hrsg) && empty($titel_zusatz)) {
        echo " <br /> Hrsg.: ". $hrsg;
       }

    if (!empty($hrsg) && !empty($titel_zusatz)) {
        echo " / Hrsg.: ". $hrsg;
    }

    if (!empty($ort)) {
        echo " <br />". $ort;
    }

    if (!empty($verlag)) {
        echo " : ". $verlag;
    }

    if (!empty($issn_autorisiert)) {
    echo "<br />ISSN: ". $issn_autorisiert;
    }

    if (!empty($forts)) {
        echo "<br />Fortsetzung: ". $forts;
    }

    if (!empty($vorg)) {
        echo "<br />Vorher: ". $vorg;
    }

    if (!empty($bestand)) {
        $bestand = "&nbsp;&nbsp;&nbsp;Bestand: ". $bestand;
    }

echo '<br />Erscheinungszeitraum: <i>'. $erscheinungszeitraum. '</i><br /><br />Signatur: '. $signatur_ml. $bestand. '<br /><br />';

 if (preg_match ("/-$/i", $bestand)) {
    			echo '<a class="bib" href="mailto:bibliothek@example.com?subject=Umlauf&body=Bitte in Umlauf eintragen:'. $titel. '" " target="_blank" title="Umlauf per vorformulierter E-Mail bestellen">Umlauf</a>&nbsp;&nbsp;&nbsp;';
				} else {
    			echo "";
            }

if (!empty($ppn)) {
          $url_opac = "http://opac.tib.uni-hannover.de/DB=9.5/XMLPRS=N/PPN?PPN=". $ppn;
      echo '<a class="bib" href="'. $url_opac. '" title="Nachweis im Katalog des ML" target="_blank">Katalog</a>';
         }

$inhvz_button = '&nbsp;&nbsp;&nbsp;<a class="bib" href="http://gso.gbv.de/DB=2.2/CNA?PPN='. $ppn. '&IPNSRC=0/SHRTST=15" title="Alle Aufsätze dieser Zeitschrift im Verbundkatalog" target="_blank"> Inhaltsverzeichnis</a>';

  if (preg_match ("/swets/i", $swets)) {
  	 $swets = 1;
     }

 if (preg_match ("/olc-ssg/i", $olcssg)) {
 	  $olcssg = 1;
    }

  if($swets == 1 || $olcssg == 1) {
  	echo $inhvz_button;
  	}
if (!empty($online_button1) && empty($online_button2)) {
   echo $online_button1;
    }

// Wenn beide gesetzt sind, soll der direkte EZB-Link erschienen.
if (!empty($online_button2) && !empty($online_button1)) {
   echo $online_button1;
    }

if (!empty($online_button2) && empty($online_button1)) {
    echo $online_button2;
    }

echo '</li>';

$i++;
}
echo "</ol>";
?>

</body>
</html>

RSS-Feeds für HOBSY-OPACs

Mit RSS-Feeds können Rechercheergebnisse abonniert werden und jeder Nutzer kann sich so über aktuelle Veröffentlichungen innerhalb seines Interessengebietes automatisch informieren lassen. Zudem können die Inhalte von RSS-Feeds maschinell weiterverarbeitet und mit anderen Inhalten kombiniert werden.

Die Ergebnislisten von Katalogen des Lokalsystems Hannover (HOBSY) können nicht  als RSS-Feeds ausgegeben werden. Wie sich mit Hilfe der beiden Entwicklungswerkzeuge Yahoo Query Language (YQL) und Yahoo Pipes eine Ergebnisliste als RSS-Feed darstellen lässt, soll hier vorgestellt werden.

XML=1

Mit dem Parameter XML=1, der mit Schrägstrich an den URL einer Abfrage angehängt wird, können die Daten einer Kurztitelanzeige in XML-Syntax ausgeben werden.

Abb. 1: XML-Ausgabe der Kurztitel

Es handelt sich um Kurztitel; die XML-Syntax von PICA+, dem Internformat von PICA, ist im Verbund-Wiki dokumentiert.

Yahoo Query Language (YQL) als API

Mit Hilfe von YQL, einer von SQL abgeleiteten Abfragesprache, können Daten unterschiedlicher Herkunft und Formate ausgewählt und zusammengeführt werden. Eine typische Abfrage lautet: (YQL-Befehle in Großbuchstaben):

SELECT {what} FROM {table} WHERE {filter}.
  • {what} = Suchbegriff, z.B. „*“ alle suchbaren Felder oder „Name“
  • {table} = Beschreibung der Datenquelle in Tabellenform
  • {filter} = Filterkriterien, z.B. „search_key= Hamburg“

Die Grundlage für eine YQL-Abfrage bildet eine Tabelle, die keine Daten enthält, sondern als eine abstrakte Beschreibung der Datenquelle fungiert. Als Ausgangspunkt für eine Abfrage dient die YQL Online-Konsole.

Abb. 2: Tabelle für den OPAC

Diese Tabelle (Abb. 2) enthält Pfadangaben und Suchschlüssel für eine OPAC-Recherche. In Zeile 11 (select.itemPath) ist der Pfad zu den einzelnen Datensätzen (s. Abb. 1) angegeben. Unter inputs.key sind die einzelnen Suchschlüssel aufgeführt. Am Beispiel einer Musterabfrage, die ebenfalls Bestandteil der Tabelle ist, kann die Funktionsweise nachvollzogen werden. Das Ergebnis der Recherche kann im XML- oder JSON-Format ausgegeben und mit Hilfe der REST-Schnittstelle übernommen werden,  z.B. in Yahoo Pipes. Der Name für den Funktionsaufruf der Callback-Funktion am Ende des REST-URLs &callback=cbfunc muss  in diesem Fall (Yahoo Pipes) allerdings weggelassen werden, da die Daten nicht direkt mit Javascript weiterverarbeitet werden.

Abb. 3: Ergebnisse in JSON mit REST-URL

Die Katalogdaten werden stattdessen – nachdem im URL die entsprechenden Eingabemöglichkeiten (Modul: Text Input) berücksichtigt worden sind – vom Modul Fetch Data ausgelesen. Anschließend werden durch Rename (Mapping) und Reguläre Ausdrücke die einzelnen Elemente des RSS-Feeds erzeugt. In der Editieransicht sind die einzelnen Verarbeitungsschritte erkennbar.

Die Pipe sieht zwei Eingabemöglichkeiten vor. Im Feld für die Datenbank (z.B. DB=9.5) wird die Nummer des jeweiligen OPACs eingetragen , so wie sie im URL für den Aufruf (s. HOBSY Katalogmenü)  genannt ist. Im Feld Suchbegriff wird der Index 1016 (Alle Wörter) ausgewertet. Leerzeichen müssen als „+“ geschrieben werden. Eine Abfrage nach einer Notation der Basisklassifikation lautet also „BKL+86*“ (hier mit „*“ trunkiert).

Der URL für den RSS-Feed ist unter „Get as RSS“ abrufbar und kann in eigene Seiten übernommen werden. Die Suchbegriffe lassen sich auch im URL des Feeds verändern.

Aufruf der Pipe HOBSY2RSS