From: Mike Taylor Date: Fri, 4 May 2007 12:09:24 +0000 (+0000) Subject: Add and use xpath_context() X-Git-Tag: CPAN-v1.02~54^2~377 X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=commitdiff_plain;h=63c7c8da2c3a514daafe08763096319697594378 Add and use xpath_context() --- diff --git a/lib/ZOOM/IRSpy/Record.pm b/lib/ZOOM/IRSpy/Record.pm index 7659e4a..4ba8bb6 100644 --- a/lib/ZOOM/IRSpy/Record.pm +++ b/lib/ZOOM/IRSpy/Record.pm @@ -1,4 +1,4 @@ -# $Id: Record.pm,v 1.24 2007-04-27 14:04:40 mike Exp $ +# $Id: Record.pm,v 1.25 2007-05-04 12:09:24 mike Exp $ package ZOOM::IRSpy::Record; ### I don't think there's any reason for this to be separate from @@ -10,7 +10,7 @@ use warnings; use XML::LibXML; use XML::LibXML::XPathContext; -use ZOOM::IRSpy::Utils qw(xml_encode isodate); +use ZOOM::IRSpy::Utils qw(xml_encode isodate irspy_xpath_context); =head1 NAME @@ -72,8 +72,7 @@ sub append_entry { my($xpath, $frag) = @_; #print STDERR "this=$this, xpath='$xpath', frag='$frag'\n"; - my $root = $this->{zeerex}; # XML::LibXML::Element ISA XML::LibXML::Node - my $xc = XML::LibXML::XPathContext->new($root); + my $xc = $this->xpath_context(); $xc->registerNs(zeerex => "http://explain.z3950.org/dtd/2.0/"); $xc->registerNs(irspy => $ZOOM::IRSpy::Utils::IRSPY_NS); @@ -83,8 +82,7 @@ sub append_entry { # fully general version would work its way through each # component of the XPath, but for now we just treat it as a # single chunk to go inside the top-level node. - $this->_half_decent_appendWellBalancedChunk($root, - "<$xpath>"); + $this->_half_decent_appendWellBalancedChunk($xc, "<$xpath>"); @nodes = $xc->findnodes($xpath); die("still no matches for '$xpath' after creating: can't append") if @nodes == 0; @@ -97,6 +95,12 @@ sub append_entry { $this->_half_decent_appendWellBalancedChunk($nodes[0], $frag); } +sub xpath_context { + my $this = shift(); + + return irspy_xpath_context($this->{zeerex}); +} + sub store_result { my ($this, $type, %info) = @_; my $xml = "