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 jw...@apache.org on 2003/09/19 12:08:04 UTC
cvs commit: xml-axkit/lib/Apache/AxKit/Language XPathScript.pm
jwalt 2003/09/19 03:08:04
Modified: lib/Apache/AxKit/Language XPathScript.pm
Log:
- reverted provider registry patch
Revision Changes Path
1.12 +38 -9 xml-axkit/lib/Apache/AxKit/Language/XPathScript.pm
Index: XPathScript.pm
===================================================================
RCS file: /home/cvs/xml-axkit/lib/Apache/AxKit/Language/XPathScript.pm,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- XPathScript.pm 17 Sep 2003 21:58:38 -0000 1.11
+++ XPathScript.pm 19 Sep 2003 10:08:04 -0000 1.12
@@ -324,17 +324,46 @@
my $results = XML::XPath::NodeSet->new();
my $uri = $params[0];
my $newdoc;
- eval {
- $newdoc = $parser->parse(Apache::AxKit::Provider::get_uri($uri));
- };
- if (my $E = $@) {
- if ($E->isa('Apache::AxKit::Exception::IO')) {
- AxKit::Debug(2, $E);
- }
- else {
- throw Apache::AxKit::Exception::Error(-text => "Parse of '$uri' failed: $E");
+ if ($uri =~ /^axkit:/) {
+ $newdoc = $parser->parse( AxKit::get_axkit_uri($uri) );
+ } elsif ($uri =~ /^xmldb:/) {
+ $newdoc = $parser->parse( Apache::AxKit::Provider::XMLDB::get_xmldb_uri($uri) );
+ }
+ elsif ($uri =~ /^\w\w+:/) { # assume it's scheme://foo uri
+ eval {
+ # warn "Trying to parse $params[0]\n";
+ $newdoc = $parser->parse(
+ $Apache::AxKit::Language::XPathScript::local_ent_handler->(
+ undef, undef, $uri
+ )
+ );
+ # warn "Parsed OK into $newdoc\n";
};
+ if (my $E = $@) {
+ if ($E->isa('Apache::AxKit::Exception::IO')) {
+ AxKit::Debug(2, $E);
+ }
+ else {
+ throw Apache::AxKit::Exception::Error(-text => "Parse of '$uri' failed: $E");
+ };
+ }
+ }
+ else {
+ AxKit::Debug(3, "Parsing local: $uri\n");
+
+ # create a subrequest, so we get the right AxKit::Cfg for the URI
+ my $apache = AxKit::Apache->request;
+ my $sub = $apache->lookup_uri(AxKit::FromUTF8($uri));
+ local $AxKit::Cfg = Apache::AxKit::ConfigReader->new($sub);
+
+ my $provider = Apache::AxKit::Provider->new_content_provider($sub);
+
+ $newdoc = get_source_tree($provider, $parser);
+ undef $provider;
+ undef $apache;
+ undef $sub;
}
+
$results->push($newdoc) if $newdoc;
#AxKit::Debug(8, "XPathScript: document() returning");
return $results;