On Dec 13, 2007, at 9:10 AM, Don Gourley wrote:
>> Put another way, if I want to use repository using
>> NET::OAI::Harvester to read repository data in a
>> form other than DC will I need to write an additional
>> module such as NET::OAI::Record::MARCXML?
>
> I don't know if this is the only way to do it, but that is how
> I use NET::OAI::Harvester to handle metadata in DIDL that I get
> out of a DSpace repository via a custom crosswalk plugin. The
> harvest script simply invokes the Harvester like this:
>
> my $rec = $harvester->getRecord('identifier' => $oaiid,
> 'metadataPrefix' => 'oai_didl',
> 'metadataHandler' => 'DOC_DIDL',
> 'set' => $set);
On Dec 13, 2007, at 9:48 AM, Ed Summers wrote:
> Net::OAI::Record::OAI_DC is an example of a SAX filter
> which receives SAX events for each metadata record in a
> response and builds up a representation of the record.
> Since oai_dc is standard in oai-pmh-land it's assumed
> as a default a lot of the time.
>
> So if you want to retrieve another kind of metadata you
> have to write a SAX filter for it, and then reference
> it when you are calling getRecord(), listRecords() or
> listAllRecords()....
>
> And here's a barely functional MODSHandler that just
> pulls out the title:
>
> package MODSHandler;
>
> use XML::SAX::Base;
> use base qw(XML::SAX::Base);
>
> sub new {
> my $class = shift;
> return bless {inside => 0}, ref($class) || $class;
> }
>
> sub title {
> return shift->{title};
> }
>
> sub start_element {
> my ($self, $element) = @_;
> if ($element->{Name} eq 'title') {$self->{inside} = 1;}
> }
>
> sub end_element {
> my ($self, $element) = @_;
> if ($element->{Name} eq 'title') {$self->{inside} = 0;}
> }
>
> sub characters {
> my ($self, $chars) = @_;
> if ($self->{inside}) {
> $self->{title} .= $chars->{Data};
> }
> }
>
> 1;
Thank you for the prompt replies, and y'all have confirmed what I
believed. The "best" way to accomplish my goal is to write a SAX
filter for the metadata schema I desire.
But I'm lazy, and even though it is not the best solution, I will
explore another option. Specifically, I will use oai_dump (which
comes with N::O::H), change the metadata scheme from oai_dc to
marc21, run the script, and parse the resulting XML. If I'm lucky my
parser will able to be written as a SAX filter that can be added to
the N::O::H distribution. In the meantime, at least I will have the
data. Wish me luck.
--
Eric Lease Morgan
University Libraries of Notre Dame
|