Read-only release history for XML-LibXSLT-Processor
License
gitpan/XML-LibXSLT-Processor
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
NAME XML::LibXSLT::Processor - XSLT processor based on libxslt with additional features SYNOPSIS use XML::LibXML; use XML::LibXSLT::Processor; my $xsltproc = XML::LibXSLT::Processor->new(); my $xml = XML::LibXML->load_xml(location => 'foo.xml'); my $result = $xsltproc->transform($xml, 'bar.xsl' => { param => 1 }); print $result->output_string(); Multi-pass transform: my $result = $xsltproc->transform($xml, 'style1.xsl' => { param => 1 }, 'style2.xsl' => { param => 1 }, ... ); DESCRIPTION This processor caches templates, documents and keys, which leads to the acceleration of the transformation, as well as much more. Transformation benchmark: Test small xml: Rate XML::LibXSLT XML::LibXSLT::Processor XML::LibXSLT 14493/s -- -35% XML::LibXSLT::Processor 22222/s 53% -- Test big xml: Rate XML::LibXSLT XML::LibXSLT::Processor XML::LibXSLT 823/s -- -3% XML::LibXSLT::Processor 851/s 3% -- Using the key() function: First run: Rate Search by key (not cached) Search by key (cached) Sequential search Search by key (not cached) 20.0/s -- -40% -100% Search by key (cached) 33.3/s 67% -- -100% Sequential search -- -- -- -- Second run: Rate Search by key (not cached) Sequential search Search by key (cached) Search by key (not cached) 31.5/s -- -88% -100% Sequential search 254/s 706% -- -99% Search by key (cached) 20000/s 63440% 7780% -- Using the document() function: Rate XML::LibXSLT Processor (Not cached) Processor (Cached) XML::LibXSLT 7092/s -- -32% -65% Processor (Not cached) 10417/s 47% -- -48% Processor (Cached) 20000/s 182% 92% -- Using profiler: my $xsltproc = XML::LibXSLT::Processor->new( profiler_enable => 1, profiler_repeat => 20, ); my $result = $xsltproc->transform('t/files/test1.xml', 't/files/multi-transform1.xsl' => { pass => "1" }, 't/files/multi-transform2.xsl' => { pass => "2" }, ); print $result->profiler_result->toString(2); <profiler repeat="20"> <stylesheet uri="t/files/multi-transform1.xsl" time="196"> <profile> <template rank="1" match="/" name="" mode="" calls="20" time="13" average="0"/> </profile> <document> <root> <pass1>1</pass1> </root> </document> <params> <param name="pass" value="1"/> </params> </stylesheet> <stylesheet uri="t/files/multi-transform2.xsl" time="221"> <profile> <template rank="1" match="/" name="" mode="" calls="20" time="21" average="1"/> </profile> <document> <root> <prev_pass>1</prev_pass> <pass2>2</pass2> </root> </document> <params> <param name="pass" value="2"/> </params> </stylesheet> </profiler> Example of using profiler you can see in directory "examples/profiler". METHODS new my $xsltproc = XML::LibXSLT::Processor->new(%options); Creates instance of the XSLT processor. Valid options are: * stylesheet_max_depth [ = 250 ] my $xsltproc = XML::LibXSLT::Processor->new( stylesheet_max_depth => 1000 ); This option sets the maximum recursion depth for a stylesheet. * stylesheet_caching_enable [ = 1 ] my $xsltproc = XML::LibXSLT::Processor->new( stylesheet_caching_enable => 1 ); Set this option to "1" to enable stylesheet caching. * document_caching_enable [ = 1 ] my $xsltproc = XML::LibXSLT::Processor->new( document_caching_enable => 1 ); Set this option to "1" to enable XML document caching. * keys_caching_enable [ = 1 ] my $xsltproc = XML::LibXSLT::Processor->new( keys_caching_enable => 1 ); Set this option to "1" to enable keys caching. * profiler_enable [ = 0 ] my $xsltproc = XML::LibXSLT::Processor->new( profiler_enable => 1 ); Set this option to "1" to enable collection the profile information. * profiler_stylesheet [ = undef ] my $xsltproc = XML::LibXSLT::Processor->new( profiler_stylesheet => 'profiler.xsl' ); If parameter is specified, the profile information added with this template in the resulting HTML document. * profiler_repeat [ = 1 ] my $xsltproc = XML::LibXSLT::Processor->new( profiler_repeat => 1 ); This option sets the number of repeats transformations. transform(xml, stylesheet => \%params, stylesheet => \%params, ...) my $xml = XML::LibXML->load_xml(location => 'foo.xml'); my $result = $xsltproc->transform($xml, 'bar.xsl'); print $result->output_string(); my $result = $xsltproc->transform('foo.xml', 'bar.xsl' => { param => 1 }); print $result->output_string(); my $result = $xsltproc->transform('<root/>', 'bar.xsl' => { param => 1 }); print $result->output_string(); my $result = $xsltproc->transform('<root/>', 'bar.xsl' => { param => 1 }, 'bar.xsl' => { param => 2 }); print $result->output_string(); Transforms the passed in XML document, and returns XML::LibXSLT::Processor::Result. Paramaters are: * xml XML document may be specified as an XML::LibXML::Document object, a file name or a string. * stylesheet Stylesheet file name. XSLT FUNCTIONS The namespace for XSLT functions is "http://xsltproc.org/xslt/string". str:join((node-set|string), ..., sep) Returns a string created by concatenating the string arguments and using the sep argument as the separator. Example: str:join('str1', 'str2', ' ') Result: 'str1 str2' Example: str:join('str1', /root/string, 'str4', ', ') XML: <root><string>str2</string><string>str3</string></root> Result: 'str1, str2, str3, str4' str:uc(string) Converts the string argument to upper-case. str:lc(string) Converts the string argument to lower-case. str:trim(string) Removes whitespaces and other predefined characters (\t, \r, \n) from both sides of a string. str:ltrim(string) Removes whitespaces and other predefined characters (\t, \r, \n) from the left side of a string. str:rtrim(string) Removes whitespaces and other predefined characters (\t, \r, \n) from the right side of a string. AUTHOR Yuriy Ustushenko, <<yoreek@yahoo.com>> COPYRIGHT AND LICENSE Copyright (C) 2013 Yuriy Ustushenko This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
About
Read-only release history for XML-LibXSLT-Processor
Resources
License
Stars
Watchers
Forks
Packages 0
No packages published