NAME MARC::Schema - Specification of the MARC21 format SYNOPSIS # in Perl use MARC::Schema; my $record = { _id => 'fol05865967', record => [ [ 'LDR', undef, undef, '_', '00661nam 22002538a 4500' ], [ '001', undef, undef, '_', 'fol05865967' ], [ '001', undef, undef, '_', 'field is not repeatable' ], [ '245', '1', '0', 'a', 'Programming Perl /', 'c', 'Larry Wall, Tom Christiansen & Jon Orwant.', 'a', 'subfield is not repeatable', 'x', 'unknown subfield', ], [ '999', undef, undef, '_', 'not a standard field'] ] }; # load default schema my $schema = MARC::Schema->new(); # load custom schema from file my $schema = MARC::Schema->new({ file => share/marc-schema.json }); # load custom schema my $schema = MARC::Schema->new( { fields => { '001' => { label => 'Control Number', repetable => 0 } } } ); my @check = $schema->check($record); # via the command line $ marcvalidate t/camel.mrc $ marcvalidate --schema marc_schema.json t/camel.mrc $ marcvalidate --type XML marc.xml DESCRIPTION MARC::Schema defines a set of MARC21 fields and subfields to validate Catmandu::MARC records. A schema is given as hash reference such as: { fields => { LDR => { positions => [ { position => '00-04', label => 'Record length' } ], repeatable => 0, }, '001' => { label => 'Control Number', repeatable => 0 } } } For a more detailed description of the (default) schema see MARC21 structure in JSON . METHODS check( $record [, %options ] ) Check whether a given "Catmandu::Importer::MARC" or "MARC::Parser::*" record confirms to the schema and return a list of detected violations. Possible options include: ignore_unknown_fields Don't report fields not included in the schema. ignore_unknown_subfields Don't report subfields not included in the schema. Errors are given as list of hash references with keys error, tag, type and value of the violated field. error contains a human-readable error message for each violated field and/or subfield. check_field( $field [, %options ] ) Check whether a MARC21 field confirms to the schema. Use same options as method check. AUTHOR Johann Rolschewski CONTRIBUTORS Patrick Hochstenbach COPYRIGHT Copyright 2018- Johann Rolschewski LICENSE This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. SEE ALSO Catmandu::Validator JSON::Schema PICA::Schema MARC::Lint ACKNOWLEDGEMENT MARC::Schema uses the MARC21 schema developed by Péter Király as default. For more information see "Metadata assessment for MARC records" and "MARC21 structure in JSON" .