hebis / picareader
用于读取编码为 Pica, PicaXML 和 PicaPlain 的 Pica+ 记录的类
Requires
- hab/picarecord: ~1.0
This package is auto-updated.
Last update: 2024-09-20 19:09:55 UTC
README
关于
PicaReader 提供了用于读取编码为 PicaXML 和 PicaPlain 的 Pica+ 记录的类。
PicaReader 版权所有 (c) 2012-2016 由 Herzog August Bibliothek Wolfenbüttel 拥有,并按照 GNU 通用公共许可证 v3 条款发布。
安装
您可以通过 Composer 安装 PicaReader。
composer require hab/picareader
使用方法
所有读取器都遵循相同的接口。您可以通过调用 Reader::open()
使用输入数据字符串打开读取器,并通过调用 Reader::read()
读取输入数据中的下一个记录。如果输入数据不包含(更多)记录,则 Reader::read()
返回 FALSE
。否则,它返回一个记录对象,该对象是通过 PicaRecord 的 Record::factory()
函数创建的。
$reader = new \HAB\Pica\Reader\PicaXmlReader() $reader->open(file_get_contents('http://unapi.gbv.de?id=opac-de-23:ppn:635012286&format=picaxml')); $record = $reader->read(); $reader->close();
要过滤记录或字段,您可以通过 Reader::setFilter()
将过滤器附加到读取器。过滤器是任何有效的 PHP 回调函数,它接受一个表示记录的关联数组作为参数,并返回可能已修改的数组或 FALSE
,如果整个记录应被跳过。
记录的数组表示法如下定义
RECORD := array('fields' => array(FIELD, …)) FIELD := array('tag' => TAG, 'occurrence' => OCCURRENCE, 'subfields' => array(SUBFIELD, …)) SUBFIELD := array('code' => CODE, 'value' => VALUE)
其中 TAG
、OCCURRENCE
、CODE
和 VALUE
分别是 Pica+ 字段或子字段的相应属性。
例如,如果您的源提供如下不规则的 PicaXML 记录
<?xml version="1.0" encoding="UTF-8"?> <record xmlns="info:srw/schema/5/picaXML-v1.0"> <datafield tag=""> </datafield> <datafield tag="001A"> <subfield code="0">0001:14-09-10</subfield> </datafield> … </record>
您可以通过附加一个过滤器函数来删除这些具有无效标签的字段
$reader = new PicaXmlReader(); $reader->setFilter(function (array $r) { return array('fields' => array_filter($r['fields'], function (array $f) { return isset($f['tag']) && \HAB\Pica\Record\Field::isValidFieldTag($f['tag']); })); }); $record = $reader->read(…); $reader->close();
致谢
本包的大部分内容没有研究 Jakob Voß 开发的开源 Perl 库 Pica::Record 的源代码以及我们图书馆编目员的专业知识是不可能的。