# yaz_record

(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)

yaz_record — Devuelve un registro

### Descripción

yaz_record(resource `$id`, int `$pos`, string `$type`): string

La función yaz_record() inspecciona un registro del conjunto resultado actual que está en la posición especificada por el parámetro `pos`.

### Parámetros

`id`

  El recurso de conexión devuelto por yaz_connect().

`pos`

  La posición del registro. Las posiciones de los registros en el conjunto resultado están numeradas con 1, 2, ... $hits donde $hits es el contador devuelto por yaz_hits().

`type`

  El parámetro `type` especifica la forma del registro devuelto.

  > Nota:

  > Es la aplicación responsable de asegurar realmente que los registros son devueltos en el formato correcto por el servidor Z39.50/SRW. El type indicado únicamente especifica una conversión que se realizará en el lado cliente (en PHP/YAZ).

  Además de la conversion del registro transferido a un string/array, PHP/YAZ también puede realizar una conversión de mapa de caracteres del registro. Esto es recomendado especialmente para USMARC/MARC21 puesto que éstos se devuelven habitualmente en el mapa de caracteres MARC-8 que no está soportado por navegadores, etc. Para especificar una conversión, añadir `; charset=`from`,` to donde from es el mapa de caracteres original del registro y to es el mapa de caracteres resultante (desde el punto de vista PHP).

  `string`

    El registro se devuelve como un string de visualización simple. En este modo, todos los registros MARC se convierten a un formato línea a línea ya que ISO2709 es difícilmente legible. Los registros XML y SUTRS se devuelven en su formato original. GRS-1 se devuelve en un (feo) formato línea a línea.

    Este formato es adecuado si los registros se mostrarán de forma rápida - para depuración - o porque no es factible realizar una visualización adecuada.

  `xml`

    El registro se devuelve como un string XML si es posible. En este modo, todos los registros MARC se convierten en » MARCXML. Los registros XML y SUTRS se devuelven en su formato original. GRS-1 no está soportado.

    Este formato es parecido a `string` excepto por los registros MARC que se convierten a MARCXML

    Este formato es adecuado si los registros se procesan posteriormente por un interpretador XML o un procesador XSLT .

  `raw`

    El registro se devuelve como un string en su formato original. Este tipo es adecuado para MARC, XML y SUTRS. No funciona con GRS-1.

    Los registros MARC se devuelven como un string ISO2709. XML y SUTRS son devueltos como strings.

  `syntax`

    La sintaxis del registro se devuelve como un string, p.e. `USmarc`, `GRS-1`, `XML`, etc.

  `database`

    El nombre de la base de datos asociada con el registro en la posición, se devuelve como un string.

  `array`

    El registro se devuelve como un array que refleja la estructura GRS-1. Este tipo es adecuado para MARC y GRS-1. XML, SUTRS no están soportados y si el registro actual es XML o SUTRS se devolverá un string vacío.

    El array devuelto consiste en una lista correspondiente a cada hoja/nodo interno de GRS-1. Cada lista de elementos consiste en una sublista con el primer elemento path y data (si los datos están disponibles).

    El camino de acceso, que es un string, contiene una lista de tres componentes (del registro estructurado GRS-1) de la raíz a la hoja. Cada componente es un par de tipo etiqueta/valor de etiqueta de la forma `(`type`,` value

    Las etiguqetas normalmente tienen un tipo tag 3. MARC también puede ser devuelto como un array (se convierten a GRS-1 internamente).

### Valores devueltos

Devuelve el registro que se encuentra en la posición `pos` o un string vacío si no existe ningún registro en la posición indicada.

Si no hay registro en la posición indicada en la base de datos, se devolverá un string vacío.

### Ejemplos

Ejemplo #1 Array para registro GRS-1

Considerar este registro GRS-1 :

    (4,52)Robert M. Pirsig
    (4,70)
          (4,90)
                (2,7)Transworld Publishers, ltd.

Este registro tiene dos nodos a nivel de raíz. El primer elemento del nivel raíz es (4,52) [tipo tag 4, valor de tag 52], y tiene datos `Robert M. Pirsig`. El segundo elemento en el nivel raíz (4,70) tiene un subárbol con un elemento simple (4,90). (4,90) tiene a su vez otro subárbol (2,7) con datos `Transworld Publishers, ltd.`.

Si este registro está presente en la posición $p, entonces

`<?php
$ar = yaz_record($id, $p, "array");
print_r($ar);
?>`
will output:

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

Ejemplo #2 Trabajar con MARCXML

El siguiente fragmento de PHP devuelve un registro MARC21/USMARC como MARCXML. El registro original se devuelve en marc-8 (desconocido para muchos interpretadores XML), así que lo convertimos a UTF-8 (que todos los interpretadores XML deben soportar).

`<?php
$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
?>`

El registro `$rec` puede ser procesado con el procesador Sablotron XSLT de la forma siguiente:

`<?php
$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);
echo $res;
?>`