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