Signatur
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
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.';
}
?>
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;
}
}
}
?>
// 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: USMARC → 1.2.840.10003.5.10, SUTRS → 1.2.840.10003.5.101, XML → 1.2.840.10003.5.109.10.