Start · Sprachen · PHP · Referenz · yaz_schema

yaz_schema

Funktion

Gibt das Schema für den Abruf von Datensätzen in einer YAZ-Z39.50-Verbindung an.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_schema(resource $id, string $schema): void

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

Typ
void
Beschreibung
Diese Funktion gibt keinen Wert zurück.

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.';
}
?>
Gefundene Datensätze: 42

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);
    }
}
?>
Treffer: 17

// 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.