my $prevtag = -1;
my $first = 1;
my $j = -1;
+ my $close_last_tag;
for ( my $i = 0 ; $i < @$tags ; $i++ ) {
if ( C4::Context->preference('marcflavour') eq 'UNIMARC' and @$tags[$i] eq "100" and @$subfields[$i] eq "a" ) {
@$values[$i] =~ s/'/'/g;
if ( ( @$tags[$i] ne $prevtag ) ) {
+ $close_last_tag = 0;
$j++ unless ( @$tags[$i] eq "" );
my $indicator1 = eval { substr( @$indicator[$j], 0, 1 ) };
my $indicator2 = eval { substr( @$indicator[$j], 1, 1 ) };
$xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
$xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
$first = 0;
+ $close_last_tag = 1;
} else {
$first = 1;
}
$xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
$xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
$first = 0;
+ $close_last_tag = 1;
}
}
}
if ($first) {
$xml .= "<datafield tag=\"@$tags[$i]\" ind1=\"$ind1\" ind2=\"$ind2\">\n";
$first = 0;
+ $close_last_tag = 1;
}
$xml .= "<subfield code=\"@$subfields[$i]\">@$values[$i]</subfield>\n";
}
}
$prevtag = @$tags[$i];
}
- $xml .= "</datafield>\n" if $xml =~ m/<datafield/;
+ $xml .= "</datafield>\n" if $close_last_tag;
if ( C4::Context->preference('marcflavour') eq 'UNIMARC' and !$unimarc_and_100_exist ) {
# warn "SETTING 100 for $auth_type";
}
$xml .= "</record>\n";
$xml .= MARC::File::XML::footer();
+ use Data::Printer colored => 1; warn p $xml;
return $xml;
}
my ( $tags, $subfields );
if ( $marc_flavour eq 'UNIMARC' ) {
- $tags= [ '001', '600', '200', '200' ];
- $subfields = [ '', 'a', 'a', 'c' ];
+ $tags= [ '001', '600', '200', '200', '400' ];
+ $subfields = [ '', 'a', 'a', 'c', 'a' ];
} else {
- $tags= [ '001', '100', '245', '245' ];
- $subfields = [ '', 'a', 'a', 'c' ];
+ $tags= [ '001', '100', '245', '245', '400' ];
+ $subfields = [ '', 'a', 'a', 'c', 'a' ];
}
- my $values = [ '12345', 'author', 'title', 'resp' ];
- my $ind = [ ' ', '00', ' 9', ' ' ];
+ my $values = [ '12345', 'author', 'title', 'resp', '' ];
+ my $ind = [ ' ', '00', ' 9', ' ', ' ' ];
my $xml = TransformHtmlToXml( $tags, $subfields, $values, $ind, undef, $marc_flavour );
my $xmlh = XML::Simple->new->XMLin( $xml );