16. Zugriff auf die GND für Titel
Kapitel hinzufügen

JavaScript zum Zugriff auf die GND für Titel (DNB). Das Script ist Bestandteil von BCS-2 V6 Professional. Sie finden es unter dem Dateinamen dnb_titel_suche.js im folgenden Verzeichnis: C:\ProgramData\ImageWareComponents\BCS2_V6_64\js.

//
// das xr Objekt:
//
// zuständig für XML-Requests an SRU oder andere Server
//
// xr.url: die URL, welche für den Zugriff verwendet wird.
//         eingebette in die URL ist immer ein Ausdruck,
//         der aus einem Index-Wert stammt und vom Nutzer
//         eingegeben wurde.
//         im vorliegenden Fall: id.index(1), dies steht
//         für den momentan aktiven Index-Dialog, dort dann
//         der entsprechende Index
//         "and BBG=Tp*" bedeutet: nur 'typisierte' Personen nehmen
//
xr.url = "http://services.dnb.de/sru/authorities?version=1.1&operation=searchRetrieve&query=per%3D" +
         id.index(1) +
         " and BBG=Tp*";

//
// performRequest() führt den Zugriff durch und holt die Ergebnisliste ab.
//
id.setInformation ("GND-Suche nach '" + id.index(1) + "' bei der DNB läuft...");
xr.performRequest();
id.setInformation ("");

//
// clearMarItemList() löscht die interne Ergebnisliste.
//
xr.clearMarcItemList();

//
// für die Darstellung der Liste in der Anwendung muss zunächst eine Menge
// von Spalten definiert werden.
// Die Daten werden aus dem MARC21-xml Ergebnis ausgelesen.
// xr.addFetchItem hat die folgenden Parameter:
//
// column_name:     Name der Spalte in der Anzeige
// item_number:     MARC-Feldname (Nummer)
// subfield_code:   MARC-Unterfeld (Ziffer oder Buchstabe)
// serial_type:     steuert, wie mit Mehrfacheinträgen zumzugehen ist:
//                  all:      alle Einträge werden genommen, getrennt durch Kommata
//                  first:    nur der erste Eintrag wird genommen
//                  last:     nur der letzte Eintrag wird genommen
//                  longest:  der längste Eintrag wird genommen
//                  smallest: der kürzeste Eintrag wird genommen
// prefix:          optionaler Prefix, ist dieser nicht-leer, muss das
//                  Textelement mit dem Prefix anfangen, damit es
//                  zum Ergebnis genommen wird.
//                  Das Prefix wird aus dem Ergebnis entfernt
//
// Beispiel: um die GND-ID zu erhalten, muss das MARC-Feld 035 untersucht
//           werden. Dort das Unterfeld "a".
//           Allerdings sind nur die Treffer richtig, bei denen das Prefix
//           "(DE-588)" ist.
//
xr.addFetchItem("Name",                   "100", "a");
xr.addFetchItem("Jahrgang",               "548", "a", "longest");
xr.addFetchItem("GND-ID",                 "035", "a", "first", "(DE-588)");
xr.addFetchItem("Beruf",                  "550", "a");
xr.addFetchItem("Geburtsort",             "551", "a");
xr.addFetchItem("weitere Informationen",  "678", "b");

//
// fetchMarcItemList extrahiert aus dem internen XML-Ergebnis die einzelnen
// Records
//
// Parameter:
//
// path_to_list:       Pfad vom Root-Element zur Liste der Records. Im vorliegenden Fall "records"
// list_element_name:  Name des eigentlichen Record-Elements. hier "record"
// path_to_items:      Unterhalb des Record-Elements der Pfad zu den eigentlichen Record-Daten
//
xr.fetchMarcItemList ("records", "record", "recordData/record");

//
// Anzeige der Liste
//
xr.showMarcItemList("GND-Abfrage bei der DNB für den Autor '" + id.index(1) + "'", xr.itemListLength() + " Treffer. Bitte doppelt klicken um die GND-ID zu übernehmen!");


//
// Hinweis für den Nutzer
// (Kann auch auskommentiert werden)
//
if (xr.resultColumn(3).length > 0)
   xr.notifyUser ("Ergebnis GND-ID", xr.resultColumn(3));

//
// Falls eine GND-ID ermittelt wurde, werden nun einige Werte
// in die aktuellen Index-Werte übernommen:
// resultColumn (n) liefert den Wert der n-ten Spalte
// id.setIndex(i, wert) setzt den Index-Wert des i-ten Index
//
if (xr.resultColumn(3).length > 0) {
  id.setIndex(7, xr.resultColumn(3));
}

xr.requestResult;