You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axkit-dev@xml.apache.org by ma...@apache.org on 2006/08/04 14:43:15 UTC
svn commit: r428710 - in /xml/axkit/trunk: MANIFEST
lib/Apache/AxKit/Language/HtmlDoc.pm lib/Apache/AxKit/Language/LibXSLT.pm
lib/Apache/AxKit/Language/XSP.pm lib/Apache/AxKit/LibXMLSupport.pm
lib/Apache/AxKit/Provider.pm
Author: matts
Date: Fri Aug 4 05:43:14 2006
New Revision: 428710
URL: http://svn.apache.org/viewvc?rev=428710&view=rev
Log:
Patches to update to XML::LibXML 1.59 API
Removed:
xml/axkit/trunk/lib/Apache/AxKit/LibXMLSupport.pm
Modified:
xml/axkit/trunk/MANIFEST
xml/axkit/trunk/lib/Apache/AxKit/Language/HtmlDoc.pm
xml/axkit/trunk/lib/Apache/AxKit/Language/LibXSLT.pm
xml/axkit/trunk/lib/Apache/AxKit/Language/XSP.pm
xml/axkit/trunk/lib/Apache/AxKit/Provider.pm
Modified: xml/axkit/trunk/MANIFEST
URL: http://svn.apache.org/viewvc/xml/axkit/trunk/MANIFEST?rev=428710&r1=428709&r2=428710&view=diff
==============================================================================
--- xml/axkit/trunk/MANIFEST (original)
+++ xml/axkit/trunk/MANIFEST Fri Aug 4 05:43:14 2006
@@ -142,7 +142,8 @@
lib/Apache/AxKit/Language/XSP/Preload.pm
lib/Apache/AxKit/Language/XSP/SimpleTaglib.pm
lib/Apache/AxKit/Language/XSP/TaglibHelper.pm
-lib/Apache/AxKit/LibXMLSupport.pm
+lib/Apache/AxKit/LibXMLCallbacks.pm
+lib/Apache/AxKit/LibXML.pm
lib/Apache/AxKit/Makefile.PL
lib/Apache/AxKit/MediaChooser/WAPCheck.pm
lib/Apache/AxKit/Plugin/Fragment.pm
Modified: xml/axkit/trunk/lib/Apache/AxKit/Language/HtmlDoc.pm
URL: http://svn.apache.org/viewvc/xml/axkit/trunk/lib/Apache/AxKit/Language/HtmlDoc.pm?rev=428710&r1=428709&r2=428710&view=diff
==============================================================================
--- xml/axkit/trunk/lib/Apache/AxKit/Language/HtmlDoc.pm (original)
+++ xml/axkit/trunk/lib/Apache/AxKit/Language/HtmlDoc.pm Fri Aug 4 05:43:14 2006
@@ -25,7 +25,8 @@
use Apache::Constants qw(:common);
use Apache::Request;
use Apache::AxKit::Language;
-use Apache::AxKit::LibXMLSupport;
+use Apache::AxKit::LibXML;
+use Apache::AxKit::LibXMLCallbacks;
use Apache::AxKit::Provider;
use XML::LibXSLT;
use IPC::Run qw(run);
@@ -40,16 +41,15 @@
my $class = shift;
my ($r, $xml_provider, undef, $last_in_chain) = @_;
- my $parser = XML::LibXML->new();
- local($XML::LibXML::match_cb, $XML::LibXML::open_cb,
- $XML::LibXML::read_cb, $XML::LibXML::close_cb);
- Apache::AxKit::LibXMLSupport->reset();
+ my $parser = Apache::AxKit::LibXML->new();
+ $parser->expand_xinclude(1);
my $dom;
my $source_text;
if ($dom = $r->pnotes('dom_tree')) {
;
- } elsif ($source_text = $r->pnotes('xml_string')) {
+ }
+ elsif ($source_text = $r->pnotes('xml_string')) {
$dom = $parser->parse_string($source_text, $r->uri());
}
else {
@@ -60,7 +60,6 @@
}
$dom = $parser->parse_string($source_text, $r->uri());
}
- $dom->process_xinclude();
my $style_dom = $parser->parse_string(<< 'EOX','.');
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml">
@@ -69,7 +68,9 @@
<xsl:template match="text()"><xsl:value-of select="."/></xsl:template>
</xsl:stylesheet>
EOX
- my $stylesheet = XML::LibXSLT->parse_stylesheet($style_dom);
+ my $xslt = XML::LibXSLT->new();
+ $xslt->input_callbacks( Apache::AxKit::LibXMLCallbacks->input_callbacks() );
+ $stylesheet = $xslt->parse_stylesheet($style_dom);
my $results = $stylesheet->transform($dom);
my $result;
Modified: xml/axkit/trunk/lib/Apache/AxKit/Language/LibXSLT.pm
URL: http://svn.apache.org/viewvc/xml/axkit/trunk/lib/Apache/AxKit/Language/LibXSLT.pm?rev=428710&r1=428709&r2=428710&view=diff
==============================================================================
--- xml/axkit/trunk/lib/Apache/AxKit/Language/LibXSLT.pm (original)
+++ xml/axkit/trunk/lib/Apache/AxKit/Language/LibXSLT.pm Fri Aug 4 05:43:14 2006
@@ -25,7 +25,8 @@
use Apache::Request;
use Apache::AxKit::Language;
use Apache::AxKit::Provider;
-use Apache::AxKit::LibXMLSupport;
+use Apache::AxKit::LibXML;
+use Apache::AxKit::LibXMLCallbacks;
use File::Basename qw(dirname);
@ISA = 'Apache::AxKit::Language';
@@ -62,11 +63,9 @@
$xmlstring = $r->pnotes('xml_string');
}
- my $parser = XML::LibXML->new();
+ my $parser = Apache::AxKit::LibXML->new();
$parser->expand_entities(1);
- local($XML::LibXML::match_cb, $XML::LibXML::open_cb,
- $XML::LibXML::read_cb, $XML::LibXML::close_cb);
- Apache::AxKit::LibXMLSupport->reset();
+ $parser->expand_xinclude(1);
local $Apache::AxKit::LibXMLSupport::provider_cb =
sub {
my $r = shift;
@@ -82,8 +81,6 @@
$xml_doc = $parser->parse_string($xmlstring, $r->uri());
}
- $xml_doc->process_xinclude();
-
AxKit::Debug(7, "[LibXSLT] parsing stylesheet");
my $stylesheet;
@@ -111,9 +108,8 @@
AxKit::Debug(7, "[LibXSLT] parsing stylesheet $style_uri");
my $style_doc = $style->get_dom();
- local($XML::LibXML::match_cb, $XML::LibXML::open_cb,
- $XML::LibXML::read_cb, $XML::LibXML::close_cb);
- Apache::AxKit::LibXMLSupport->reset();
+ my $xslt = XML::LibXSLT->new();
+ $xslt->input_callbacks( Apache::AxKit::LibXMLCallbacks->input_callbacks() );
local $Apache::AxKit::LibXMLSupport::provider_cb =
sub {
my $r = shift;
@@ -122,7 +118,7 @@
return $provider;
};
- $stylesheet = XML::LibXSLT->parse_stylesheet($style_doc);
+ $stylesheet = $xslt->parse_stylesheet($style_doc);
unless ($r->dir_config('AxDisableXSLTStylesheetCache')) {
$style_cache{$style->key()} =
Modified: xml/axkit/trunk/lib/Apache/AxKit/Language/XSP.pm
URL: http://svn.apache.org/viewvc/xml/axkit/trunk/lib/Apache/AxKit/Language/XSP.pm?rev=428710&r1=428709&r2=428710&view=diff
==============================================================================
--- xml/axkit/trunk/lib/Apache/AxKit/Language/XSP.pm (original)
+++ xml/axkit/trunk/lib/Apache/AxKit/Language/XSP.pm Fri Aug 4 05:43:14 2006
@@ -19,6 +19,7 @@
use strict;
use AxKit;
+use Apache::AxKit::LibXML;
use Apache::AxKit::Language;
use Apache::Request;
use Apache::AxKit::Exception;
@@ -1079,7 +1080,7 @@
package AxKit::XSP::SAXParser;
use XML::LibXML 1.30;
-use Apache::AxKit::LibXMLSupport;
+use Apache::AxKit::LibXML;
sub new {
my ($type, %self) = @_;
@@ -1092,11 +1093,9 @@
my $doc;
if (ref($thing) ne 'XML::LibXML::Document') {
- my $parser = XML::LibXML->new();
- local($XML::LibXML::match_cb, $XML::LibXML::open_cb,
- $XML::LibXML::read_cb, $XML::LibXML::close_cb);
- Apache::AxKit::LibXMLSupport->reset($parser);
+ my $parser = Apache::AxKit::LibXML->new();
$parser->expand_entities(1);
+ $parser->expand_xinclude(1);
eval {
$parser->line_numbers(1);
AxKit::Debug(6,"enabled line numbers");
@@ -1108,9 +1107,9 @@
else {
$doc = $parser->parse_string($thing);
}
- AxKit::Debug(10, 'XSP: Parser returned doc');
- $doc->process_xinclude;
- } else {
+ AxKit::Debug(9, 'XSP: Parser returned doc');
+ }
+ else {
$doc = $thing;
}
Modified: xml/axkit/trunk/lib/Apache/AxKit/Provider.pm
URL: http://svn.apache.org/viewvc/xml/axkit/trunk/lib/Apache/AxKit/Provider.pm?rev=428710&r1=428709&r2=428710&view=diff
==============================================================================
--- xml/axkit/trunk/lib/Apache/AxKit/Provider.pm (original)
+++ xml/axkit/trunk/lib/Apache/AxKit/Provider.pm Fri Aug 4 05:43:14 2006
@@ -19,6 +19,7 @@
use strict;
use Apache::AxKit::Exception;
+use Apache::AxKit::LibXML;
use Apache::Constants qw(OK DECLINED);
use AxKit;
@@ -82,7 +83,7 @@
my $str = get_provider(@_)->get_strref;
- return $$str;
+ return $str;
}
# end of protocol utilities
@@ -163,39 +164,36 @@
require Apache::AxKit::LibXMLSupport;
AxKit::Debug(8, "Provider::get_dom");
- my $parser = XML::LibXML->new();
+ my $parser = Apache::AxKit::LibXML->new();
$parser->expand_entities(1);
$parser->expand_xinclude(1);
- local($XML::LibXML::match_cb, $XML::LibXML::open_cb,
- $XML::LibXML::read_cb, $XML::LibXML::close_cb);
- Apache::AxKit::LibXMLSupport->reset($parser);
my $r = $self->apache_request();
my $xml_doc;
if ($str) {
- use bytes;
+ use bytes;
AxKit::Debug(8, "Provider::get_dom/parse_string($str, ", $self->get_document_uri(), ")");
$xml_doc = $parser->parse_string($str, $self->get_document_uri()) ||
throw Apache::AxKit::Exception::Error(
-text => "XML::LibXML->parse_string returned nothing!"
);
- } else {
- eval {
- my $fh = $self->get_fh();
- AxKit::Debug(8, "Provider::get_dom/parse_fh($fh, ", $self->get_document_uri(), ")");
- $xml_doc = $parser->parse_fh($fh, $self->get_document_uri());
- };
- if ($@) {
- use bytes;
- my $xmlstring = ${$self->get_strref()};
- AxKit::Debug(8, "Provider::get_dom/parse_strref($xmlstring, ", $self->get_document_uri(), ")");
- $xml_doc = $parser->parse_string($xmlstring, $self->get_document_uri()) ||
- throw Apache::AxKit::Exception::Error(
- -text => "XML::LibXML->parse_string returned nothing!"
- );
- }
- }
+ } else {
+ eval {
+ my $fh = $self->get_fh();
+ AxKit::Debug(8, "Provider::get_dom/parse_fh($fh, ", $self->get_document_uri(), ")");
+ $xml_doc = $parser->parse_fh($fh, $self->get_document_uri());
+ };
+ if ($@) {
+ use bytes;
+ my $xmlstring = ${$self->get_strref()};
+ AxKit::Debug(8, "Provider::get_dom/parse_strref($xmlstring, ", $self->get_document_uri(), ")");
+ $xml_doc = $parser->parse_string($xmlstring, $self->get_document_uri()) ||
+ throw Apache::AxKit::Exception::Error(
+ -text => "XML::LibXML->parse_string returned nothing!"
+ );
+ }
+ }
return $xml_doc;
}
@@ -266,7 +264,7 @@
undef $pref_style;
}
- my @styles;
+ my @styles;
my $key = $self->key();
# need to extract the following from the XML file:
@@ -274,22 +272,22 @@
# DTD filename
# Root element name (including namespace)
# use three element array @$vals
-
- my ($doctype, $dtd, $root, $xml_styles) = $self->get_xml_info( $media, $pref_style );
-
- $xml_styles = [] if $AxKit::Cfg->IgnoreStylePI();
-
- foreach my $style (@$xml_styles) {
- $style->{title} ||= '#default';
- }
-
- # Let GetMatchingProcessors to process the @$styles array
- {
- local $^W; # suppress "Use of uninitialized value" warnings
- AxKit::Debug(4, "Calling GetMatchingProcessors with ($media, $pref_style, $doctype, $dtd, $root)");
- }
+
+ my ($doctype, $dtd, $root, $xml_styles) = $self->get_xml_info( $media, $pref_style );
+
+ $xml_styles = [] if $AxKit::Cfg->IgnoreStylePI();
+
+ foreach my $style (@$xml_styles) {
+ $style->{title} ||= '#default';
+ }
+
+ # Let GetMatchingProcessors to process the @$styles array
+ {
+ local $^W; # suppress "Use of uninitialized value" warnings
+ AxKit::Debug(4, "Calling GetMatchingProcessors with ($media, $pref_style, $doctype, $dtd, $root)");
+ }
- @styles = $AxKit::Cfg->GetMatchingProcessors($media, $pref_style, $doctype, $dtd, $root, $xml_styles, $self);
+ @styles = $AxKit::Cfg->GetMatchingProcessors($media, $pref_style, $doctype, $dtd, $root, $xml_styles, $self);
if (!@styles) {
throw Apache::AxKit::Exception::Declined( reason => "No styles defined for '$key'" );
@@ -325,34 +323,34 @@
}
sub get_xml_info{
- my ($self, $media, $pref_style ) = @_;
-
- # This is where the sniffing of the xml content happens.
-
- my $r = $self->apache_request();
- my @ret;
- eval{
- my $fh = $self->get_fh();
- my $pos = eval { tell $fh; };
- if($@) {
- # fh is not seekable, thus we must slurp file at this point.
- undef $@;
- local($/) = undef;
- my $string = <$fh>;
- $r->pnotes('xml_string', $string);
- @ret = parse_xml_info( $r, undef, \$string, $media, $pref_style);
- } else {
- # seekable.
- @ret = parse_xml_info( $r, $fh, undef, $media, $pref_style);
- seek $fh, 0, $pos;
- }
- };
- if($@) {
- my $str_ref = $self->get_strref();
- $r->pnotes('xml_string', ${$str_ref});
- @ret = parse_xml_info( $r, undef, $str_ref, $media, $pref_style);
- }
- return @ret;
+ my ($self, $media, $pref_style ) = @_;
+
+ # This is where the sniffing of the xml content happens.
+
+ my $r = $self->apache_request();
+ my @ret;
+ eval{
+ my $fh = $self->get_fh();
+ my $pos = eval { tell $fh; };
+ if($@) {
+ # fh is not seekable, thus we must slurp file at this point.
+ undef $@;
+ local($/) = undef;
+ my $string = <$fh>;
+ $r->pnotes('xml_string', $string);
+ @ret = parse_xml_info( $r, undef, \$string, $media, $pref_style);
+ } else {
+ # seekable.
+ @ret = parse_xml_info( $r, $fh, undef, $media, $pref_style);
+ seek $fh, 0, $pos;
+ }
+ };
+ if($@) {
+ my $str_ref = $self->get_strref();
+ $r->pnotes('xml_string', ${$str_ref});
+ @ret = parse_xml_info( $r, undef, $str_ref, $media, $pref_style);
+ }
+ return @ret;
}
sub parse_xml_info{
@@ -364,53 +362,53 @@
my $xml_styles = [];
my $vals = [];
- my @styles;
+ my @styles;
+
+ if (defined &Apache::AxKit::Provider::xs_get_styles_fh) {
+ AxKit::Debug(2, "using XS get_styles (libxml2)");
+ my ($xs_styles, $doctype, $dtd, $root) = xs_get_styles($r, $fh, $str_ref, $media, $pref_style);
+ @$xml_styles = @$xs_styles unless $AxKit::Cfg->IgnoreStylePI();
+ @$vals = ($doctype, $dtd, $root);
+ }
+ else {
+ require XML::Parser;
+
+ AxKit::Debug(4, "get_styles: creating XML::Parser");
+
+ my $handlers = {
+ Start => \&parse_start,
+ Doctype => \&parse_dtd,
+ $AxKit::Cfg->IgnoreStylePI() ? () : (Proc => \&parse_pi),
+ };
- if (defined &Apache::AxKit::Provider::xs_get_styles_fh) {
- AxKit::Debug(2, "using XS get_styles (libxml2)");
- my ($xs_styles, $doctype, $dtd, $root) = xs_get_styles($r, $fh, $str_ref, $media, $pref_style);
- @$xml_styles = @$xs_styles unless $AxKit::Cfg->IgnoreStylePI();
- @$vals = ($doctype, $dtd, $root);
- }
- else {
- require XML::Parser;
-
- AxKit::Debug(4, "get_styles: creating XML::Parser");
-
- my $handlers = {
- Start => \&parse_start,
- Doctype => \&parse_dtd,
- $AxKit::Cfg->IgnoreStylePI() ? () : (Proc => \&parse_pi),
- };
-
- my $xml_parser = XML::Parser->new(
- Namespaces => 1,
- ErrorContext => 2,
- Handlers => $handlers,
- );
-
- my $to_parse = $fh || ${$str_ref};
- #eval {
- # $to_parse = $provider->get_fh();
- #};
- #if ($@) {
- # $to_parse = ${ $provider->get_strref(); };
- #}
-
- AxKit::Debug(4, "get_styles: calling XML::Parser->parse()");
- $xml_parser->parse(
- $to_parse,
- XMLStyle_preferred => $pref_style,
- XMLStyle_media => $media,
- XMLStyle_style => $xml_styles,
- XMLStyle_vals => $vals,
- XMLStyle_style_screen => [],
- );
-
- AxKit::Debug(4, "get_styles: parse returned successfully");
- }
-
- return (@$vals, $xml_styles);
+ my $xml_parser = XML::Parser->new(
+ Namespaces => 1,
+ ErrorContext => 2,
+ Handlers => $handlers,
+ );
+
+ my $to_parse = $fh || ${$str_ref};
+ #eval {
+ # $to_parse = $provider->get_fh();
+ #};
+ #if ($@) {
+ # $to_parse = ${ $provider->get_strref(); };
+ #}
+
+ AxKit::Debug(4, "get_styles: calling XML::Parser->parse()");
+ $xml_parser->parse(
+ $to_parse,
+ XMLStyle_preferred => $pref_style,
+ XMLStyle_media => $media,
+ XMLStyle_style => $xml_styles,
+ XMLStyle_vals => $vals,
+ XMLStyle_style_screen => [],
+ );
+
+ AxKit::Debug(4, "get_styles: parse returned successfully");
+ }
+
+ return (@$vals, $xml_styles);
}
sub xs_get_styles {