sub debug {
my ($title, $data) = @_;
- print "# $title ",dump($data), $/;
+ print "# $title ",dump($data), $/ if $ENV{DEBUG};
}
my $xslfilename = 'compact.xsl';
my $parsed = $xslt->parse_stylesheet($style_doc);
my $biblio_html;
+my $biblio_parsed;
open(my $xml_fh, '>', '/tmp/bibliografija.xml') if $ENV{XML};
sub biblioitem_html {
- my $biblionumber = shift;
+ my ($biblionumber, $parse_only) = @_;
- return $biblio_html->{$biblionumber} if exists $biblio_html->{$biblionumber};
+ return $biblio_html->{$biblionumber} if exists $biblio_html->{$biblionumber} && ! $parse_only;
my $xmlrecord = $marcxml->{$biblionumber} || confess "missing $biblionumber marcxml";
return;
}
+ if ( $parse_only ) {
+ $biblio_parsed->{$biblionumber} = $source;
+ return $source;
+ }
+
my $transformed = $parsed->transform($source);
$biblio_html->{$biblionumber} = $parsed->output_string( $transformed );
- return ( $biblio_html->{$biblionumber}, $source ) if wantarray;
+ delete $biblio_parsed->{$biblionumber};
+
return $biblio_html->{$biblionumber};
}
$marcxml->{ $row->{biblionumber} } = $row->{marcxml};
- my ( undef, $doc ) = biblioitem_html( $row->{biblionumber} );
+ my $doc = biblioitem_html( $row->{biblionumber}, 1 );
if ( ! $doc ) {
- warn "ERROR can't parse MARCXML ", $row->{biblionumber}, " ", $row->{marcxml}, "\n";
+# warn "ERROR can't parse MARCXML ", $row->{biblionumber}, " ", $row->{marcxml}, "\n";
next;
}
if ($elt->localname eq 'controlfield') {
if ( $tag eq '008' ) {
- $biblio_year->{ $row->{biblionumber} } = substr($elt->textContent, 7, 4 );
+ my $year = substr($elt->textContent, 7, 4 );
+ if ( $year !~ m/^\d+$/ ) {
+ $year = 0;
+ push @{ $skip->{invalid_year} }, $row->{biblionumber};
+ }
+ $biblio_year->{ $row->{biblionumber} } = $data->{year} = $year;
}
next;
} elsif ($elt->localname eq 'datafield') {
}
}
+ if ( $data->{year} < 2008 ) {
+ push @{ $skip->{year_lt_2008} }, $row->{biblionumber};
+ next;
+ } elsif ( $data->{year} > 2013 ) {
+ push @{ $skip->{year_gt_2013} }, $row->{biblionumber};
+ next;
+ }
+
# warn "# ", $row->{biblionumber}, " data ",dump($data);
my $category = $data->{942}->[0]->{'t'};