@@ -, +, @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd" xmlns="http://www.loc.gov/MARC21/slim"> ^ ^ --- C4/Biblio.pm | 8 +++++++- t/Biblio/TransformHtmlToXml.t | 12 ++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) --- a/C4/Biblio.pm +++ a/C4/Biblio.pm @@ -2263,6 +2263,7 @@ sub TransformHtmlToXml { 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" ) { @@ -2283,6 +2284,7 @@ sub TransformHtmlToXml { @$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 ) }; @@ -2301,6 +2303,7 @@ sub TransformHtmlToXml { $xml .= "\n"; $xml .= "@$values[$i]\n"; $first = 0; + $close_last_tag = 1; } else { $first = 1; } @@ -2320,6 +2323,7 @@ sub TransformHtmlToXml { $xml .= "\n"; $xml .= "@$values[$i]\n"; $first = 0; + $close_last_tag = 1; } } } @@ -2339,13 +2343,14 @@ sub TransformHtmlToXml { if ($first) { $xml .= "\n"; $first = 0; + $close_last_tag = 1; } $xml .= "@$values[$i]\n"; } } $prevtag = @$tags[$i]; } - $xml .= "\n" if $xml =~ m/preference('marcflavour') eq 'UNIMARC' and !$unimarc_and_100_exist ) { # warn "SETTING 100 for $auth_type"; @@ -2362,6 +2367,7 @@ sub TransformHtmlToXml { } $xml .= "\n"; $xml .= MARC::File::XML::footer(); + use Data::Printer colored => 1; warn p $xml; return $xml; } --- a/t/Biblio/TransformHtmlToXml.t +++ a/t/Biblio/TransformHtmlToXml.t @@ -33,14 +33,14 @@ sub run_tests { 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 ); --