File: OAI_Eprints.pm

package info (click to toggle)
libhttp-oai-perl 4.03-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 416 kB
  • ctags: 326
  • sloc: perl: 2,531; xml: 224; makefile: 12
file content (42 lines) | stat: -rw-r--r-- 1,502 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package HTTP::OAI::Metadata::OAI_Eprints;

use strict;
use warnings;

use Carp;
use XML::LibXML;
use HTTP::OAI::Metadata;

use vars qw( @ISA );
@ISA = qw( HTTP::OAI::Metadata );

sub new {
	my $self = shift->SUPER::new(@_);
	my %args = @_;
	my $dom = XML::LibXML->createDocument();
	$dom->setDocumentElement(my $root = $dom->createElementNS('http://www.openarchives.org/OAI/1.1/eprints','eprints'));
#	$root->setAttribute('xmlns','http://www.openarchives.org/OAI/2.0/oai-identifier');
	$root->setAttribute('xmlns:xsi','http://www.w3.org/2001/XMLSchema-instance');
	$root->setAttribute('xsi:schemaLocation','http://www.openarchives.org/OAI/1.1/eprints http://www.openarchives.org/OAI/1.1/eprints.xsd');
	for(qw( content metadataPolicy dataPolicy submissionPolicy )) {
		Carp::croak "Required argument $_ undefined" if !defined($args{$_}) && $_ =~ /metadataPolicy|dataPolicy/;
		next unless defined($args{$_});
		my $node = $root->appendChild($dom->createElement($_));
		$args{$_}->{'URL'} ||= [];
		$args{$_}->{'text'} ||= [];
		foreach my $value (@{$args{$_}->{'URL'}}) {
			$node->appendChild($dom->createElement('URL'))->appendChild($dom->createTextNode($value));
		}
		foreach my $value (@{$args{$_}->{'text'}}) {
			$node->appendChild($dom->createElement('text'))->appendChild($dom->createTextNode($value));
		}
	}
	$args{'comment'} ||= [];
	for(@{$args{'comment'}}) {
		$root->appendChild($dom->createElement('comment'))->appendChild($dom->createTextNode($_));
	}
	$self->dom($dom);
	$self;
}

1;