yaz_record

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

yaz_record返回记录

描述

yaz_record(resource $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 字符集返回,而 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

记录的语法作为字符串返回,即 USmarcGRS-1XML 等。

database

与该位置的记录关联的数据库名称作为字符串返回。

array

记录作为数组返回,该数组反映了 GRS-1 结构。此类型适合于 MARC 和 GRS-1。XML、SUTRS 不受支持,如果实际记录是 XML 或 SUTRS,则将返回空字符串。

返回的数组包含一个列表,该列表对应于 GRS-1 的每个叶/内部节点。每个列表项包含一个子列表,其中第一个元素为 *path* 和 *data*(如果数据可用)。

*path* 是一个字符串,它保存从根到叶的每个树组件(结构化 GRS-1 记录)的列表。每个组件都是一个标签类型、标签值对,形式为 (type, value

字符串标签通常具有对应的标签类型 3。MARC 也可以作为数组返回(它们在内部转换为 GRS-1)。

返回值

返回位置 pos 的记录,如果在给定位置不存在记录,则返回空字符串。

如果在给定位置不存在数据库记录,则返回空字符串。

示例

示例 #1 GRS-1 记录的数组

考虑这个 GRS-1 记录

(4,52)Robert M. Pirsig
(4,70)
      (4,90)
            (2,7)Transworld Publishers, ltd.
此记录在根级别有两个节点。根级别的第一个元素是 (4,52) [标签类型 4,标签值 52],并具有数据 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

以下 PHP 代码段将 MARC21/USMARC 记录作为 MARCXML 返回。原始记录以 marc-8(大多数 XML 解析器未知)返回,因此我们将其转换为 UTF-8(所有 XML 解析器都必须支持)。

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

可以使用 Sablotron XSLT 处理器来处理记录 $rec,如下所示

<?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;

?>

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top