Apache-XPointer
view release on metacpan or search on metacpan
lib/Apache/XPointer/XPath.pm view on Meta::CPAN
# $Id: XPath.pm,v 1.10 2004/11/16 04:38:52 asc Exp $
use strict;
package Apache::XPointer::XPath;
use base qw (Apache::XPointer);
$Apache::XPointer::XPath::VERSION = '1.1';
=head1 NAME
Apache::XPointer::XPath - mod_perl handler to address XML fragments using XPath.
=head1 SYNOPSIS
<Directory /foo/bar>
<FilesMatch "\.xml$">
SetHandler perl-script
PerlHandler Apache::XPointer::XPath
PerlSetVar XPointerSendRangeAs "multipart/mixed"
</FilesMatch>
</Directory>
#
my $ua = LWP::UserAgent->new();
my $req = HTTP::Request->new(GET => "http://example.com/foo/bar/baz.xml");
$req->header("Range" => qq(xmlns("x=x-urn:example")xpointer(*//x:thingy)));
$req->header("Accept" => qq(application/xml, multipart/mixed));
my $res = $ua->request($req);
=head1 DESCRIPTION
Apache::XPointer is a mod_perl handler to address XML fragments using
the HTTP 1.1 I<Range> and I<Accept> headers and the XPath scheme, as described
in the paper : I<A Semantic Web Resource Protocol: XPointer and HTTP>.
Additionally, the handler may also be configured to recognize a conventional
CGI parameter as a valid range identifier.
If no 'range' property is found, then the original document is
sent unaltered.
If an I<Accept> header is specified with no corresponding match, then the
server will return (406) HTTP_NOT_ACCEPTABLE.
Successful queries will return (206) HTTP_PARTIAL_CONTENT.
=head1 OPTIONS
=head2 XPointerSendRangeAs
Return matches as one of the following content-types :
=over 4
=item * B<multipart/mixed>
--match
Content-type: text/xml; charset=UTF-8
<foo xmlns="x-urn:example:foo" xmlns:baz="x-urn:example:baz">
<baz:bar>hello</baz:bar>
</foo>
--match
Content-type: text/xml; charset=UTF-8
<foo xmlns="x-urn:example:foo" xmlns:baz="x-urn:example:baz">
<baz:bar>world</baz:bar>
</foo>
--match--
=item * B<application/xml>
<xp:range xmlns:xp="x-urn:cpan:ascope:apache-xpointer#"
xmlns:default="x-urn:example.com">
<xp:match>
<default:foo>
<default:bar>hello</default:bar>
</default:foo>
</xp:match>
( run in 2.379 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )