yaz_record
(PHP 4 >= 4.0.1, PECL yaz >= 0.9.0)
yaz_record — Возвращает запись
Описание
$id
, int $pos
, string $type
) : string
Функция yaz_record() проверяет запись в текущем результирующем
наборе на позиции, определенной параметром pos.
Список параметров
-
id -
Дескриптор соединения, возвращаемый yaz_connect().
-
pos -
Позиция записи. Записи в результирующем наборе нумеруются как 1, 2, ... $hits, где $hits - число записей в результирующем наборе, которое возвращается функцией yaz_hits().
-
type -
typeопределяет форму возвращаемой записи.Замечание:
Только приложение несет ответственность за достоверность того, что возвращаемые записи с сервера Z39.50/SRW в надлежащем формате. Задаваемый тип только определяет преобразование, которое имеет место на стороне клиента (в PHP/YAZ).
Помимо преобразования переданной записи в строку/массив, PHP/YAZ так же может преобразовывать кодировку записи. Особенно это актуально для форматов USMARC/MARC21, которые рекомендуется преобразовывать, поскольку они обычно возвращаются в кодировке MARC-8, которую не понимают браузеры и другие приложения. Чтобы определить преобразование, добавьте
; charset=from,to, где from текущая кодировка записи и to результирующая кодировка, которая будет доступна PHP.-
string -
Запись возвращается в виде строки для отображения. В этом режиме все MARC-записи преобразуются в построчное представление, поскольку в формате ISO2709 их трудно прочитать. Записи XML и SUTRS возвращаются в их родном формате. GRS-1 возвращается в (безобразном) построчном представлении.
Данный формат применим для быстрого вывода записей на экран, для отладки, или в случае, когда корректное отображение невозможно.
-
xml -
Запись возвращается как строка XML, если это возможно. В этом режиме все MARC-записи преобразовываются в формат » MARCXML. Записи XML и SUTRS возвращаются в их родном формате. GRS-1 не поддерживается.
Этот формат схож с
string, за исключением того, что MARC-записи преобразуются в MARCXML.Данный формат применим, если запись будет передана парсеру XML или XSLT-процессору.
-
raw -
Запись возвращается в виде строки в исходной форме. Данный тип применим для MARC, XML и SUTRS, но не работает для GRS-1.
MARC-запись возвращается в формате ISO2709, XML и SUTRS возвращаются как строка.
-
syntax -
Синтаксис возвращаемой записи, например
USmarc,GRS-1,XML, и д.р. -
database -
Имя базы данных, сопоставленное с записью.
-
array -
Запись возвращается в виде массива, сопоставленного со структурой GRS-1. Данный тип применим для MARC и GRS-1. XML, SUTRS не поддерживаются и, если исходная запись в формате XML или SUTRS, возвращается пустая строка.
Возвращаемый массив состоит из списка, который соответствует каждому внутреннему узлу или конечному элементу(leaf) формата GRS-1. Каждый список состоит из подсписка, первым элементом которого будет путь и дата (если она доступна).
Путь, представленый в виде строки, содержит список каждой компоненты дерева (для структуры записи GRS-1) от корневого элемента до конечного. Каждая компонента представлена парой тип поля и значение, в форме (
тип,значение).Начальное поле обычно сопоставлено типу 3. MARC-записи тоже могут быть возвращены в виде массива (они конвертируются в GRS-1).
-
Возвращаемые значения
Возвращает запись на позиции pos или пустую строку,
если на заданной позиции нет записей.
Если на заданной позиции в базе данных нет записей, будет возвращена пустая строка.
Примеры
Пример #1 Массив для записи GRS-1
Возьмем запись GRS-1, вида:
(4,52)Robert M. Pirsig
(4,70)
(4,90)
(2,7)Transworld Publishers, ltd.
Robert M.
Pirsig. Второй элемент корневого уровня (4,70) содержит поддерево с
единственным элементом (4,90). Элемент (4,90) в свою очередь содержит поддерево
(2,7) с данными Transworld Publishers, ltd..
Если данная запись находится на позиции $p, тогда скрипт
<?php
$ar = yaz_record($id, $p, "array");
print_r($ar);
?>
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.
)
)
Пример #2 Пример работы с MARCXML
Скрипт ниже вернет запись MARC21/USMARC в формате MARCXML. Исходная запись будет возвращена в кодировке marc-8 (неизвестной для большинства XML парсеров), поэтому она преобразуется в UTF-8.
<?php
$rec = yaz_record($id, $p, "xml; charset=marc-8,utf-8");
?>
Запись $rec может быть обработана
процессором Sablotron XSLT так:
<?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;
?>
Для PHP 5 нужно использовать модуль XSL вместо Sablotron XSLT.