From 80f5fcd7aeba22bbe112b61e8c4a18db9334ceeb Mon Sep 17 00:00:00 2001 From: Mike Taylor Date: Thu, 9 Nov 2006 16:15:14 +0000 Subject: [PATCH] Simplify due to correctly functioning modify_xml_document() Add new -x command-lineoption to show modified XML document. --- bin/test-xml-update.pl | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/bin/test-xml-update.pl b/bin/test-xml-update.pl index eeb7065..ad27a37 100755 --- a/bin/test-xml-update.pl +++ b/bin/test-xml-update.pl @@ -1,6 +1,6 @@ #!/usr/bin/perl -w -# $Id: test-xml-update.pl,v 1.5 2006-11-09 15:18:14 mike Exp $ +# $Id: test-xml-update.pl,v 1.6 2006-11-09 16:15:14 mike Exp $ # # Run like this: # perl -I ../lib ./test-xml-update.pl bagel.indexdata.dk:210/gils title "Test Database" author "Adam" description "This is a nice database" @@ -45,10 +45,11 @@ my @fields = ); my %opts; -if (!getopts('wnd', \%opts) || @ARGV % 2 == 0) { +if (!getopts('wnxd', \%opts) || @ARGV % 2 == 0) { print STDERR "Usage: %0 [options] [ ...]\n"; print STDERR " -w Write modified record back to DB\n"; print STDERR " -n Show new values of fields using XPath\n"; + print STDERR " -x Show new XML document with changes made\n"; print STDERR " -d Show differences between old and new XML\n"; exit 1; } @@ -82,27 +83,17 @@ if ($opts{w}) { } if ($opts{n}) { - # For some reason, $xc->find() will not work on newly added nodes - # -- it returns empty strings -- so we need to make a new - # XPathContext. Unfortunately, we can't just go ahead and make it - # by parsing the new text, since it will in general include - # references to namespaces that are not explicitly defined in the - # document. So in the absence of $parser->registerNamespace() or - # similar, we are reduced to regexp-hackery to introduce the - # namespace. Ouch ouch ouch ouch ouch. - my $t2 = $newText; - $t2 =~ s@>@ xmlns:e='http://explain.z3950.org/dtd/2.0/'>@; - my $newXc = irspy_xpath_context($t2); - foreach my $key (sort keys %data) { my $ref = $fieldsByKey{$key}; my($name, $nlines, $caption, $xpath, @addAfter) = @$ref; - my $val = $xc->findvalue($xpath); - my $val2 = $newXc->findvalue($xpath); - print "New $caption ($xpath) = '$val' = '$val2'\n"; + print "New $caption ($xpath) = '", $xc->findvalue($xpath), "'\n"; } } +if ($opts{x}) { + print $newText; +} + if ($opts{d}) { my $oldFile = "/tmp/old.txu.$$"; my $newFile = "/tmp/new.txu.$$"; -- 1.7.10.4