This package tries to map MARC21 records to CSL variables. There is no official or industry standard mapping. We develop our mapping on our interpretation of:
- the MARC21 docs
- the CSL docs
- the Citeproc JS docs, especially the CSL-JSON part.
To see which MARC fields maps to which CSL variables, look at the
documentation
or
source code
of the MarcCslVariables
class, especially the getAll()
method.
// Get a MARC record (e.g. from an XML file)
$record = Record::fromSimpleXMLElement(simplexml_load_file("marc/xml/35663.xml"));
// Wrap the record in the class provided by this package.
$marcCsl = new MarcCslVariables($record);
// Get the CSL variables as a PHP data structure.
$csl_variables = $csl_variables->jsonSerialize();
// Get the CSL variables as a CSL-JSON string.
$json_string = json_encode($csl_variables);
From here, you can use the CSL JSON string as input for something like CiteProc-JS or CiteProc-PHP in order to generate bibliographies and citations.
composer require rudolfbyker/php-marc-csl
composer install
composer test
If your data is mapped incorrectly, create an issue or PR, and provide:
- the input MARC data
- the actual output
- the expected output
- links to relevant CSL and MARC documentation
- suggestions for how to fix it
- Download phpDocumentor. According to https://www.phpdoc.org/, we should not install phpDocumentor using composer. Follow the instructions there to install it.
- Remove the old docs dir:
rm -rf docs
. - Run
phpDocumentor.phar
to generate new docs. - Commit generated docs. Docs committed to the repository should be available on Github pages: https://github.com/rudolfbyker/php-marc-csl/deployments/activity_log?environment=github-pages