yaz_record

(PHP 4 >= 4.0.1, PHP 5)

yaz_record -- Retourne un résultat

Description

string yaz_record ( resource id, int pos, string type )

yaz_record() retourne un résultat à la position pos, ou une chaîne vide si aucun résultat n'est disponible à la position pos.

yaz_record() recherche une ligne dans le résultat, à la position spécifiée par pos. Si aucun résultat n'est disponible à la position donnée, une chaîne vide est retournée.

La position des enregistrements dans le jeux de résultat est numérotée 1, 2, .... $hits où $hits est le nombre de résultats, retourné par yaz_hits().

type spécifie la forme des enregistrements retournés.

string

L'enregistrement est retourné comme une chaîne de caractères pour un affichage simple. Dans ce mode, tous les enregistrements MARC sont convertis en un format ligne par ligne du fait que l'ISO2709 n'est pas facile à lire. Les enregistrements XML et SUTRS sont retournés dans leur format d'origine. GRS-1 est retourné dans un format ligne par ligne.

Ce format est adapté si les enregistrements doivent être affichés de façon rapide pour du débogage ou parcequ'il n'est pas faisable de faire un affichage propre.

xml

Les enregistrements sont retournés sous la forme d'une chaîne XML si possible. Dans ce mode, tous les résultats MARC sont convertis en MARCXML. Les enregistrements XML et SUTRS sont retournés dans leur format d'origine. GPS-1 n'est pas supporté.

Ce format est similaire à string excepté que les résultats MARC sont convertis en MARCXML.

Ce format est adapté si les enregistrements sont traités par un analyseur XML ou un processeur XSLT en suivant.

raw

Les enregistrements sont retournés comme une chaîne de caractères dans leurs formats d'origine. Ce type est adapté pour MARC, XML et SUTRS. Il ne fonctionne pas pour GRS-1.

Les enregistrements MARC sont retournés comme une chaîne de caractères ISO2709. XML et SUTRS sont retournés comme des chaînes de caractères.

syntax

La syntaxe des enregistrements est retournée comme une chaîne de caractères i.e USmarc, GRS-1, XML, etc.

database

Le nom de la base de données associée avec les enregistrements à la position, est retourné comme une chaîne de caractères.

array

Les enregistrements sont retournés comme un tableau qui reflète la structure GRS-1. Ce type est adapté pour MARC et GRS-1. XML et SUTRS ne sont pas supportés et si l'actuel résultat est XML ou SUTRS, une chaîne vide est retournée.

Le tableau retourné est constitué d'une liste correspondant à chaque feuille/noeud interne de GRS-1. Chaque élément de la liste est constitué d'une sous-liste avec comme premier élément path et data (si les données sont disponibles).

Le chemin, qui est une chaîne de caractères, contient une liste de chaque composant de l'arbre (de la structure des enregistrements GRS-1) depuis la racine vers l'extrémité. Chaque composant est une paire de type de balise / valeur sous la forme (type, value

Les chaînes des balises, normalement, ont un type de balise correspondant 3. MARC peut aussi être retourné comme un tableau (ils sont convertis en GRS-1 en interne).

Note : C'est l'application qui est responsable actuellement d'assurer que les enregistrements sont retournés du serveur Z39.50 dans un format correct. Le type donné spécifie uniquement une conversion à mettre en place sur le client (en PHP/YAZ).

En plus de la convertion d'un enregistrement de transfert en une chaîne de caractères ou un tableau, PHP/YAZ est également possible de faire une conversion de l'enregistrement en un jeux de caractères. Tout spécialement pour USMARC/MARC21, il est recommandé, depuis qu'ils sont typiquement retournés dans le jeux de caractères MARC-8 qui n'est pas supporté par les navigateurs, etc. Pour spécifier une conversion, ajouter ; charset=from, to lorsque from est le jeux de caractères de l'enregistrement et to est le jeux de caractères résultant (comme vu par PHP).

Exemple 1. Tableau pour des enregistrements GRS-1

Considérez les enregistrements GRS-1
(4,52)Robert M. Pirsig
(4,70)
      (4,90)
            (2,7)Transworld Publishers, ltd.
Cet enregistrement a deux noeuds à la racine. Le premier élément de la racine est (4,52) [tag type 4, tag value 52], et a comme donnée Robert M. Pirsig. Le deuxième élément de la racine (4,70) a un sous-arbre avec un élément simple (4,90). (4,90) a maintenant un sous-arbre (2,7) avec comme donnée Transworld Publishers, ltd..

Si cet enregistrement est présent à la position $p, alors
$ar = yaz_record($id, $p, "array");
print_r($ar);

L'exemple ci-dessus va afficher :

Array
(
    [0] => Array
        (
            [0] => (4,52)
            [1] => Robert M. Pirsig
        )
    [1] => Array
        (
            [0] => (4,70)
        )
    [2] => Array
        (
            [0] => (4,70)(4,90)
        )
    [3] => Array
        (
            [0] => (4,70)(4,90)(2,7)
            [1] => Transworld Publishers, ltd.
        )
)

Exemple 2. Travail avec MARCXML

Le script PHP ci-dessous retourne un enregistrement MARC21/USMARC comme MARCXML. L'enregistrement original est retourné dans le jeux de caractères marc-8 (inconnu de beaucoup d'analyseur XML), donc nous le convertissons en UTF-8 (que tous les analyseurs XML supportent).
$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");

L'enregistrement $rec peut être obtenu avec le processeur Sablotron XSLT comme cela :

$xslfile = 'display.xsl';
$processor = xslt_create();
$parms = array('/_xml' => $rec);
$res = xslt_process($processor, 'arg:/_xml', $xslfile, NULL, $parms);
xslt_free($processor);
$res = preg_replace("'</?html[^>]*>'", '', $res);
print $res;

En PHP 5, l'extension XSL peut être utilisée à la place de Sablotron XSLT.