Signatur
Beschreibung
yaz_schema legt das Übertragungsschema (auch Element-Set-Name oder Retrieval Schema genannt) für eine aktive YAZ-Z39.50-Verbindung fest. Das Schema bestimmt, in welcher Struktur und mit welchem Inhalt Datensätze vom Z39.50-Server abgerufen werden sollen.
Typische Werte für das Schema sind beispielsweise MARC21, SUTRS, GRS-1 oder OPAC. Der genaue Satz verfügbarer Schemata hängt vom jeweiligen Z39.50-Zielserver ab. Diese Funktion muss vor dem eigentlichen Suchabruf (yaz_search oder yaz_present) aufgerufen werden, damit das gewünschte Schema für die Ergebnisse wirksam ist.
Z39.50 ist ein Netzwerkprotokoll für die Informationssuche und -abfrage, das vor allem in Bibliotheks- und Dokumentationsumgebungen eingesetzt wird. Die PHP-YAZ-Erweiterung ermöglicht die Nutzung dieses Protokolls aus PHP-Anwendungen heraus.
Zu beachten ist, dass die gesamte YAZ-Erweiterung als veraltet gilt und in modernen PHP-Versionen nicht mehr verfügbar ist. Für neue Projekte sollte auf aktuellere Bibliotheken wie YAZ4J oder REST-basierte Bibliotheks-APIs zurückgegriffen werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $id Pflicht | resource | Die Verbindungs-Ressource, die von yaz_connect zurückgegeben wurde und eine aktive Z39.50-Verbindung repräsentiert. |
|
| $schema Pflicht | string | Der Name des gewünschten Abrufschemas, z. B. "MARC21", "SUTRS", "GRS-1" oder "OPAC". Der Wert muss vom Zielserver unterstützt werden. |
Rückgabewert
Beispiele
Schema für einen Z39.50-Abruf setzen
<?php
// Verbindung zum Z39.50-Server herstellen
$id = yaz_connect('z3950.example.com/DBNAME');
if ($id) {
// Abrufschema auf SUTRS setzen
yaz_schema($id, 'SUTRS');
// Syntaxformat festlegen
yaz_syntax($id, 'sutrs');
// Suchanfrage definieren und ausführen
yaz_search($id, 'rpn', '@attr 1=4 "Bibliothek"');
// Verbindungen verarbeiten
yaz_wait();
$error = yaz_error($id);
if (!empty($error)) {
echo 'Fehler: ' . $error;
} else {
$treffer = yaz_hits($id);
echo 'Gefundene Datensätze: ' . $treffer . PHP_EOL;
// Ersten Datensatz abrufen
if ($treffer > 0) {
$datensatz = yaz_record($id, 1, 'string');
echo $datensatz;
}
}
} else {
echo 'Verbindung fehlgeschlagen.';
}
?>
MARC21-Schema für eine Bibliothekssuche verwenden
<?php
$id = yaz_connect('lx2.loc.gov:210/LCDB');
if ($id) {
// MARC21-Schema verwenden
yaz_schema($id, 'MARC21');
yaz_syntax($id, 'usmarc');
yaz_search($id, 'rpn', '@attr 1=1003 "Kafka"');
yaz_wait();
if (!yaz_error($id)) {
echo 'Treffer: ' . yaz_hits($id) . PHP_EOL;
} else {
echo 'Fehler: ' . yaz_error($id);
}
}
?>
// Wichtig · Fallstricke
Veraltet: Die PHP-YAZ-Erweiterung (ext/yaz) gilt als veraltet und ist in aktuellen PHP-Versionen nicht mehr im Standard-Repository enthalten. Sie sollte in neuen Projekten nicht mehr verwendet werden.
Das gewählte Schema muss vom Zielserver explizit unterstützt werden. Wird ein nicht unterstütztes Schema angefordert, kann der Server die Anfrage ablehnen oder fehlerhafte Ergebnisse liefern. Die Verfügbarkeit von Schemata sollte daher vorab mit dem Serveranbieter abgeklärt werden.
yaz_schema muss vor dem Aufruf von yaz_search oder yaz_present aufgerufen werden, da das Schema sonst nicht für die aktuelle Suchanfrage wirksam ist.