From 6bf5fb1e87e44e97daa9d7cc8df32370fc464d1e Mon Sep 17 00:00:00 2001 From: Dan Scott Date: Sat, 31 Jul 2010 03:48:00 +0000 Subject: [PATCH] Heh. Helps to add your source of the refactored methods. git-svn-id: https://svn.php.net/repository/pear/packages/File_MARC/trunk@301735 c90b9560-bf6c-de11-be94-00142212c4b1 --- MARCBASE.php | 144 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 MARCBASE.php diff --git a/MARCBASE.php b/MARCBASE.php new file mode 100644 index 0000000..ea4e4ba --- /dev/null +++ b/MARCBASE.php @@ -0,0 +1,144 @@ + + * @copyright 2007-2010 Dan Scott + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @version CVS: $Id: MARCXML.php 301727 2010-07-30 17:30:51Z dbs $ + * @link http://pear.php.net/package/File_MARC + * @example read.php Retrieve specific fields and subfields from a record + * @example subfields.php Create new subfields and add them in specific order + * @example marc_yaz.php Pretty print a MARC record retrieved through the PECL yaz extension + */ + +// {{{ class File_MARCBASE +/** + * The main File_MARCBASE class provides common methods for File_MARC and + * File_MARCXML - primarily for generating MARCXML output. + * + * @category File_Formats + * @package File_MARC + * @author Dan Scott + * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1 + * @link http://pear.php.net/package/File_MARC + */ +class File_MARCBASE +{ + + /** + * XMLWriter for writing collections + * + * @var XMLWriter + */ + protected $xmlwriter; + // }}} + + // {{{ Constructor: function __construct() + /** + * Read in MARCXML records + * + * This function reads in files or strings that + * contain one or more MARCXML records. + * + * + * + * + * + * @param string $source Name of the file, or a raw MARC string + * @param int $type Source of the input, either SOURCE_FILE or SOURCE_STRING + */ + function __construct($source, $type) + { + $this->xmlwriter = new XMLWriter(); + $this->xmlwriter->openMemory(); + $this->xmlwriter->startDocument('1.0', 'UTF-8'); + } + // }}} + + // {{{ toXMLHeader() + /** + * Initializes the MARCXML output of a record or collection of records + * + * This method produces an XML representation of a MARC record that + * attempts to adhere to the MARCXML standard documented at + * http://www.loc.gov/standards/marcxml/ + * + * @return bool true if successful + */ + function toXMLHeader() + { + $this->xmlwriter->startElement("collection"); + $this->xmlwriter->writeAttribute("xmlns", "http://www.loc.gov/MARC21/slim"); + return true; + } + // }}} + + // {{{ getXMLWriter() + /** + * Returns the XMLWriter object + * + * This method produces an XML representation of a MARC record that + * attempts to adhere to the MARCXML standard documented at + * http://www.loc.gov/standards/marcxml/ + * + * @return XMLWriter XMLWriter instance + */ + function getXMLWriter() + { + return $this->xmlwriter; + } + // }}} + + // {{{ toXMLFooter() + /** + * Returns the MARCXML collection footer + * + * This method produces an XML representation of a MARC record that + * attempts to adhere to the MARCXML standard documented at + * http://www.loc.gov/standards/marcxml/ + * + * @return string representation of MARC record in MARCXML format + */ + function toXMLFooter() + { + $this->xmlwriter->endElement(); // end collection + $this->xmlwriter->endDocument(); + return $this->xmlwriter->outputMemory(); + } + // }}} + +} +// }}}