Start · Sprachen · PHP · Referenz · yaz_syntax

yaz_syntax

Funktion

Legt die bevorzugte Datensatzsyntax (Record Syntax) für den Abruf von Datensätzen über eine YAZ-Z39.50-Verbindung fest.

seit PHP 4.0.1 Kategorie: misc

Signatur

yaz_syntax(resource $id, string $syntax): void

Beschreibung

yaz_syntax() gibt an, in welchem Format Datensätze vom Z39.50-Server beim nächsten Suchvorgang abgerufen werden sollen. Die Datensatzsyntax bestimmt, wie die vom Server zurückgelieferten Daten strukturiert sind – typische Werte sind beispielsweise USMARC, SUTRS, XML, GRS1 oder entsprechende OID-Strings wie 1.2.840.10003.5.10.

Diese Funktion muss aufgerufen werden, bevor yaz_search() oder yaz_present() ausgeführt wird, da sie lediglich die Einstellung für den nachfolgenden Abruf konfiguriert. Die tatsächliche Kommunikation mit dem Server findet erst bei yaz_wait() statt.

Die Wahl der richtigen Datensatzsyntax hängt vom jeweiligen Z39.50-Server und dem gewünschten Ausgabeformat ab. Bibliothekskataloge unterstützen häufig USMARC oder SUTRS. Wenn der Server die angeforderte Syntax nicht unterstützt, kann er einen Fehler zurückgeben oder eine abweichende Syntax liefern.

Hinweis: Die YAZ-Erweiterung ist seit PHP 7.2 nicht mehr im offiziellen PECL-Paket gepflegt und gilt als veraltet. Für neue Projekte empfiehlt sich eine alternative Bibliothek wie phpYAZ oder ein REST-basiertes API.

Parameter

Name Typ Default Beschreibung
$id Pflicht resource Die YAZ-Verbindungsressource, die zuvor mit yaz_connect() erzeugt wurde.
$syntax Pflicht string Die gewünschte Datensatzsyntax als Name (z. B. USMARC, SUTRS, XML, GRS1) oder als OID-String (z. B. 1.2.840.10003.5.10).

Rückgabewert

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

Beispiele

Z39.50-Suche mit USMARC-Syntax

<?php
// Verbindung zu einem Z39.50-Katalogserver herstellen
$id = yaz_connect('z3950.loc.gov:7090/Voyager');

if ($id) {
    // Datenbankauswahl
    yaz_database($id, 'Voyager');

    // Bevorzugte Datensatzsyntax auf USMARC setzen
    yaz_syntax($id, 'USMARC');

    // Suchanfrage vorbereiten (CQL-Anfrage)
    yaz_search($id, 'rpn', '@attr 1=4 "php programming"');

    // Alle ausstehenden Anfragen ausführen
    yaz_wait();

    // Fehlerprüfung
    $error = yaz_error($id);
    if (!empty($error)) {
        echo 'Fehler: ' . $error;
    } else {
        $hits = yaz_hits($id);
        echo 'Treffer: ' . $hits . PHP_EOL;

        // Ersten Datensatz abrufen
        $record = yaz_record($id, 1, 'string');
        echo $record;
    }
} else {
    echo 'Verbindung fehlgeschlagen.';
}
?>
Treffer: 42 ...(MARC-Rohdaten des ersten Treffers)...

Abruf von Datensätzen im SUTRS-Format

<?php
$id = yaz_connect('meinbibliotheksserver.example.com:210/bibdb');

if ($id) {
    // SUTRS (Simple Unstructured Text Record Syntax) bevorzugen
    yaz_syntax($id, 'SUTRS');

    yaz_search($id, 'rpn', '@attr 1=1003 "Müller"');
    yaz_wait();

    if (!yaz_error($id)) {
        for ($i = 1; $i <= min(5, yaz_hits($id)); $i++) {
            echo 'Datensatz ' . $i . ':' . PHP_EOL;
            echo yaz_record($id, $i, 'string') . PHP_EOL;
        }
    }
}
?>
Datensatz 1: ...(SUTRS-Textdarstellung des Datensatzes)...

// Wichtig · Fallstricke

Deprecation-Hinweis: Die YAZ-PHP-Erweiterung wird nicht mehr aktiv weiterentwickelt. Ab PHP 7.x kann es zu Kompatibilitätsproblemen kommen. Prüfe, ob die Erweiterung in deiner PHP-Version noch verfügbar ist.

Wenn ein Z39.50-Server die angeforderte Datensatzsyntax nicht unterstützt, liefert er je nach Implementierung entweder einen Diagnosefehler oder Datensätze in einer anderen als der gewünschten Syntax. Prüfe daher nach yaz_wait() stets mit yaz_error() auf Fehler.

OID-Strings für gängige Syntaxen: USMARC1.2.840.10003.5.10, SUTRS1.2.840.10003.5.101, XML1.2.840.10003.5.109.10.