# HG changeset patch # User iuc # Date 1430322916 14400 # Node ID a4bfde844a72608c0589602ee08623380fe3a5a5 # Parent 3ab2ac4f330442b1403cb88788c04c5fd3985762 Uploaded diff -r 3ab2ac4f3304 -r a4bfde844a72 macros.xml --- a/macros.xml Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,25 +0,0 @@ - - - - - package_perl_xml_xpath - - - - 1.0 - - - - - - - - - - - diff -r 3ab2ac4f3304 -r a4bfde844a72 test-data/1.xml --- a/test-data/1.xml Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -1 diff -r 3ab2ac4f3304 -r a4bfde844a72 test-data/2.xml --- a/test-data/2.xml Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -1 -2 diff -r 3ab2ac4f3304 -r a4bfde844a72 test-data/3.xml --- a/test-data/3.xml Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -1 -2 -3 diff -r 3ab2ac4f3304 -r a4bfde844a72 test-data/test.xml --- a/test-data/test.xml Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - 1 - 2 - 3 - - - 4 - 5 - - - diff -r 3ab2ac4f3304 -r a4bfde844a72 tool_dependencies.xml --- a/tool_dependencies.xml Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,6 +0,0 @@ - - - - - - diff -r 3ab2ac4f3304 -r a4bfde844a72 xpath --- a/xpath Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -#!/usr/bin/perl -w -eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}' - if 0; # not running under some shell -use strict; - -$| = 1; - -use XML::XPath; - -my @paths; -my $pipeline; -my $SUFFIX = "\n"; -my $PREFIX = ""; -my $quiet = 0; - - -PARSE: while ((@ARGV >= 1) && ($ARGV[0] =~ /^-./ )) { - OPTIONS: { - if ($ARGV[0] eq "-e") { - shift; - push @paths, shift; - last OPTIONS; - } - if ($ARGV[0] eq "-p") { - shift; - $PREFIX = shift; - last OPTIONS; - } - if ($ARGV[0] eq "-s") { - shift; - $SUFFIX = shift; - last OPTIONS; - } - if ($ARGV[0] eq "-q") { - $quiet = 1; - shift; - last OPTIONS; - } - print STDERR "Unknown option ignore: ", shift; - } -} - -unless (@paths >= 1) { - print STDERR qq(Usage: -$0 [options] -e query [-e query...] [filename...] - - If no filenams are given, supply XML on STDIN. - You must provide at least one query. Each supplementary - query is done in order, the previous query giving the - context of the next one. - - Options: - - -q quiet. Only output the resulting PATH - -s suffix use suffix instead of linefeed. - -p postfix use prefix instead of nothing. -); - exit; -} - -do -{ - my $xpath; - my @curpaths = @paths; - my $filename; - if (@ARGV >= 1) { - $filename = shift @ARGV; - $xpath = XML::XPath->new(filename => $filename); - } - else { - $filename = 'stdin'; - $xpath = XML::XPath->new(ioref => \*STDIN); - } - - my $nodes = $xpath->find(shift @curpaths); - - if ($nodes->isa('XML::XPath::NodeSet')) { - while (@curpaths >= 1) { - $nodes = find_more($xpath, shift @curpaths, $nodes); - last unless $nodes->isa('XML::XPath::NodeSet'); - } - } - - if ($nodes->isa('XML::XPath::NodeSet')) { - if ($nodes->size) { - print STDERR "Found ", $nodes->size, " nodes in $filename:\n" unless $quiet; - foreach my $node ($nodes->get_nodelist) { - print STDERR "-- NODE --\n" unless $quiet; - print $PREFIX, $node->toString, $SUFFIX; - } - } - else { - print STDERR "No nodes found in $filename\n" unless $quiet; - } - } - else { - print STDERR "Query didn't return a nodeset. Value: "; - print $nodes->value, "\n"; - } - -} until (@ARGV < 1); - -exit; - -sub find_more { - my $xpath = shift; - my $find = shift; - my ($nodes) = @_; - - my $newnodes = XML::XPath::NodeSet->new; - - foreach my $node ($nodes->get_nodelist) { - my $new = $xpath->find($find, $node); - if ($new->isa('XML::XPath::NodeSet')) { - $newnodes->append($new); - } - else { - warn "Not a nodeset: ", $new->value, "\n"; - } - } - - return $newnodes; -} - -__END__ - -=head1 NAME - -xpath - a script to query XPath statements in XML documents. - -=head1 SYNOPSIS - -B - -=head1 DESCRIPTION - -B uses the L perl module to make XPath queries -to any XML document. The L module aims to comply exactly -to the XPath specification at C and yet -allows extensions to be added in the form of functions. - -The script takes any number of XPath pointers and tries to apply them -to each XML document given on the command line. If no file arguments -are given, the query is done using C as an XML document. - -When multiple queries exist, the result of the last query is used as -context for the next query and only the result of the last one is output. -The context of the first query is always the root of the current document. - -=head1 OPTIONS - -=head2 B<-q> - -Be quiet. Output only errors (and no separator) on stderr. - -=head2 B<-s suffix> - -Place C at the end of each entry. Default is a linefeed. - -=head2 B<-p prefix> - -Place C preceding each entry. Default is nothing. - -=head1 BUGS - -The author of this man page is not very fluant in english. Please, -send him (L) any corrections concerning this text. - -See also L. - -=head1 SEE ALSO - -L. - -=head1 HISTORY - -This module is copyright 2000 Fastnet Software Ltd. This is free -software, and as such comes with NO WARRANTY. No dates are used in this -module. You may distribute this module under the terms of either the -Gnu GPL, or under specific licencing from Fastnet Software Ltd. -Special free licencing consideration will be given to similarly free -software. Please don't flame me for this licence - I've put a lot of -hours into this code, and if someone uses my software in their product -I expect them to have the courtesy to contact me first. - -Full support for this module is available from Fastnet Software Ltd on -a pay per incident basis. Alternatively subscribe to the Perl-XML -mailing list by mailing lyris@activestate.com with the text: - - SUBSCRIBE Perl-XML - -in the body of the message. There are lots of friendly people on the -list, including myself, and we'll be glad to get you started. - -Matt Sergeant, matt@sergeant.org - -This man page was added as well as some serious modifications to the script -by Fabien Ninoles for the Debian Project. - -=cut - diff -r 3ab2ac4f3304 -r a4bfde844a72 xpath.xml --- a/xpath.xml Tue Apr 28 22:56:29 2015 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,109 +0,0 @@ - - - compute xpath expressions on XML data - - macros.xml - - - - $output - ]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1234 - 1235 - 1236 - 1237 - - - -One could query out the IDs specifically with a query like:: - - //Id/text() - -**XPath Expressions** - -There are many helpful tutorials on the internet for XPath expressions. -`Wikipedia `__ has a number of good -examples. - -**Some More Examples** - -For an XML document like the following:: - - - - 1 - 2 - 3 - - - 4 - 5 - - - -Here are some example queries and their outputs: - -+====================+===================================================+ -| Query | Result | -+--------------------+---------------------------------------------------+ -| //b[@attr="value"] | 1 | -+--------------------+---------------------------------------------------+ -| //b[@attr] | 12 | -+--------------------+---------------------------------------------------+ -| //b | 123 | -+--------------------+---------------------------------------------------+ -| //b/text() | 1\n2\n3 | -+--------------------+---------------------------------------------------+ -| /root/*/*/text() | 1\n2\n3\n4\n5 | -+--------------------+---------------------------------------------------+ - - - -@ATTRIBUTION@ -]]> -