From 2e72cdcfaba1dcbe951bd359c9973d396c8601db Mon Sep 17 00:00:00 2001 From: Marcel de Rooy Date: Tue, 20 Dec 2016 16:58:05 +0100 Subject: [PATCH] Bug 17797: Add XSLT_Handler in opac/unapi Content-Type: text/plain; charset=utf-8 Replaces some code by a call to existing module. Removes the $@->code and $@->message calls. Test plan [1] Run /cgi-bin/koha/unapi?id=koha:biblionumber:[number]&format=marcxml [2] Try some variations. --- opac/unapi | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/opac/unapi b/opac/unapi index 912e5bd..d06fa44 100755 --- a/opac/unapi +++ b/opac/unapi @@ -40,8 +40,7 @@ an XML format such as OAI DC, RSS2, MARCXML, or MODS. use CGI qw ( -utf8 ); use C4::Context; use C4::Biblio; -use XML::LibXML; -use XML::LibXSLT; +use Koha::XSLT_Handler; my $cgi = CGI->new(); binmode(STDOUT, ":encoding(UTF-8)"); #output as utf8 @@ -138,18 +137,19 @@ if (not defined $format) { exit 0; } - my $transformer = get_transformer($format, $format_to_stylesheet_map, $format_info); - unless (defined $transformer) { + my $xslt_file = get_xslt_file( $format, $format_to_stylesheet_map, $format_info ); + unless( defined $xslt_file ) { print $cgi->header( -status => '406 invalid format requested' ); exit 0; } - my $parser = XML::LibXML->new(); - my $record_dom = $parser->parse_string( $marcxml ); - $record_dom = $transformer->transform( $record_dom ); - $content = $transformer->output_as_chars( $record_dom ); + my $xslt_engine = Koha::XSLT_Handler->new; + $content = $xslt_engine->transform({ + xml => $marcxml, + file => $xslt_file, + }); }; if ($@) { - print $cgi->header( -status => '500 internal error ' . $@->code() . ": " . $@->message() ); + print $cgi->header( -status => '500 internal error ' . $@ ); exit 0; } @@ -193,7 +193,7 @@ sub emit_formats { } -sub get_transformer { +sub get_xslt_file { my ($format, $format_to_stylesheet_map, $format_info) = @_; $format = lc $format; @@ -204,12 +204,7 @@ sub get_transformer { "/prog/en/xslt/" . $format_to_stylesheet_map->{$marcflavour}->{$format}; - my $parser = XML::LibXML->new(); - my $xslt = XML::LibXSLT->new(); - my $style_doc = $parser->parse_file( $xslt_file ); - my $stylesheet = $xslt->parse_stylesheet( $style_doc ); - - return $stylesheet; + return $xslt_file; } =head1 AUTHOR -- 2.1.4