Avoid XSLT stylesheet building for each biblio record to transform
In XSLT.pm, put XSLT stylesheet object in a session variable in order to avoid to build it for each biblio to parse: useful on search result page. Signed-off-by: Galen Charlton <galen.charlton@liblime.com>
This commit is contained in:
parent
17dcb45c11
commit
eaa3ee40a7
1 changed files with 7 additions and 3 deletions
10
C4/XSLT.pm
10
C4/XSLT.pm
|
@ -106,6 +106,8 @@ sub getAuthorisedValues4MARCSubfields {
|
|||
return \@results;
|
||||
}
|
||||
|
||||
my $stylesheet;
|
||||
|
||||
sub XSLTParse4Display {
|
||||
my ($biblionumber,$xslfile) = @_;
|
||||
# grab the XML, run it through our stylesheet, push it out to the browser
|
||||
|
@ -116,10 +118,12 @@ sub XSLTParse4Display {
|
|||
my $parser = XML::LibXML->new();
|
||||
# don't die when you find &, >, etc
|
||||
$parser->recover_silently(1);
|
||||
my $xslt = XML::LibXSLT->new();
|
||||
my $source = $parser->parse_string($xmlrecord);
|
||||
my $style_doc = $parser->parse_file($xslfile);
|
||||
my $stylesheet = $xslt->parse_stylesheet($style_doc);
|
||||
unless ( $stylesheet ) {
|
||||
my $xslt = XML::LibXSLT->new();
|
||||
my $style_doc = $parser->parse_file($xslfile);
|
||||
$stylesheet = $xslt->parse_stylesheet($style_doc);
|
||||
}
|
||||
my $results = $stylesheet->transform($source);
|
||||
my $newxmlrecord = $stylesheet->output_string($results);
|
||||
return $newxmlrecord;
|
||||
|
|
Loading…
Reference in a new issue