scriptotek/simplemarcparser

简单的 MARC21/XML 解析器

v0.9.1 2017-07-02 13:53 UTC

This package is auto-updated.

Last update: 2024-09-24 09:06:12 UTC


README

Build Status Coverage Status Code Quality StyleCI Latest Stable Version Total Downloads

SimpleMarcParser 目前是一个用于与 QuiteSimpleXMLElement 一起使用的最小化 MARC21/XML 解析器,支持 MARC21 图书、权威和馆藏格式。

注意: 此项目不再积极开发,但我仍然会处理问题。此项目的目标是生成 MARC21 记录的“简单”JSON 表示形式。我现在正在开发 php-marc,它是 File_MARC 的包装器。

示例

require_once('vendor/autoload.php');

use Danmichaelo\QuiteSimpleXMLElement\QuiteSimpleXMLElement,
    Scriptotek\SimpleMarcParser\Parser;

$data = file_get_contents('http://sru.bibsys.no/search/biblio?' . http_build_query(array(
	'version' => '1.2',
	'operation' => 'searchRetrieve',
	'recordSchema' => 'marcxchange',
	'query' => 'bs.isbn="0-521-43291-x"'
)));

$doc = new QuiteSimpleXMLElement($data);
$doc->registerXPathNamespaces(array(
        'srw' => 'http://www.loc.gov/zing/srw/',
        'marc' => 'http://www.loc.gov/MARC21/slim',
        'd' => 'http://www.loc.gov/zing/srw/diagnostic/'
    ));

$parser = new Parser();

$record = $parser->parse($doc->first('/srw:searchRetrieveResponse/srw:records/srw:record/srw:recordData/marc:record'));

print $record->title;

foreach ($record->subjects as $subject) {
	print $subject['term'] . '(' . $subject['system'] . ')';
}

转换/标准化

此解析器旨在生成可操作的机器输出,并执行一些不可逆的转换以实现此目的。转换规则期望类似 AACR2 的记录,并主要针对挪威版本的 AACR2(Norske katalogregler)进行测试,但也可能与其他版本很好地工作。

示例

  • title 是 300 $a 和 $b 的组合,由 : 分隔。
  • year 是从 260 $c 中提取的整数。原始值,例如用于非语言内容的值,存储在 extent
  • pages 是从 300 $a 中提取的整数。对于例如非语言内容的有用原始值存储在 extent
  • creators[].name 从 ', ' 转换为 ' '

形式和材料

形式和材料编码在引导符和控制字段 006、007 和 008 中。以有意义的方式编码此信息是一个 进行中的工作

电子和印刷材料目前使用布尔值 electronic 键区分。

印刷书籍

{
	"material": "book",
	"electronic": false
}

电子书

{
	"material": "book",
	"electronic": true
}