From: Mike Taylor Date: Fri, 21 Jul 2006 16:50:20 +0000 (+0000) Subject: Partial version of append_entry() method -- not yet working. X-Git-Tag: CPAN-v1.02~54^2~1105 X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=commitdiff_plain;h=c8c1a66291479405710e0020a59389cccf31d3e8 Partial version of append_entry() method -- not yet working. --- diff --git a/lib/ZOOM/IRSpy/Record.pm b/lib/ZOOM/IRSpy/Record.pm index 4f5ee82..8a09c54 100644 --- a/lib/ZOOM/IRSpy/Record.pm +++ b/lib/ZOOM/IRSpy/Record.pm @@ -1,4 +1,4 @@ -# $Id: Record.pm,v 1.5 2006-07-21 11:30:51 mike Exp $ +# $Id: Record.pm,v 1.6 2006-07-21 16:50:20 mike Exp $ package ZOOM::IRSpy::Record; @@ -7,6 +7,7 @@ use strict; use warnings; use XML::LibXML; +use XML::LibXML::XPathContext; =head1 NAME @@ -34,7 +35,7 @@ sub new { my $parser = new XML::LibXML(); return bless { target => $target, - zeerex => $parser->parse_string($zeerex), + zeerex => $parser->parse_string($zeerex)->documentElement(), }, $class; } @@ -57,6 +58,30 @@ __EOT__ } +sub append_entry { + my $this = shift(); + my($xpath, $frag) = @_; + + print STDERR "this=$this, xpath='$xpath', frag='$frag'\n"; + my $root = $this->{zeerex}; # XML::LibXML::Element ISA XML::LibXML::Node + print "Record='", $root->toString(), "'\n"; + my $xc = XML::LibXML::XPathContext->new($root); + $xc->registerNs(zeerex => "http://explain.z3950.org/dtd/2.0/"); + $xc->registerNs(irspy => "http://indexdata.com/irspy/1.0"); + + my @nodes = $xc->findnodes($xpath); + if (@nodes == 0) { + ZOOM::Log::log("irspy", "no matches for '$xpath': can't append"); + return; + } elsif (@nodes > 1) { + ZOOM::Log::log("irspy", scalar(@nodes), + " matches for '$xpath': using first"); + } + + print STDERR "zeerex='$root'\n"; +} + + =head1 SEE ALSO ZOOM::IRSpy