scriptotek / simplemarcparser
简单的 MARC21/XML 解析器
v0.9.1
2017-07-02 13:53 UTC
Requires
- php: >=5.6
- danmichaelo/quitesimplexmlelement: ~1.0
- illuminate/support: ~4.1|~5.0
- mrjgreen/php-cli: 1.*
- nesbot/carbon: 1.*
Requires (Dev)
- phpunit/phpunit: ~5.7|~6.0
- satooshi/php-coveralls: ~1.0
README
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 }