1use Test; 2BEGIN { plan tests => 9 } 3 4use XML::XPath; 5ok(1); 6 7my $xp = XML::XPath->new(ioref => *DATA); 8ok($xp); 9 10my @nodes; 11 12# Don't set namespace prefixes - uses element context namespaces 13 14@nodes = $xp->findnodes('//foo:foo'); # should find foobar.com foos 15ok(@nodes, 3); 16 17@nodes = $xp->findnodes('//goo:foo'); # should find no foos 18ok(@nodes, 0); 19 20@nodes = $xp->findnodes('//foo'); # should find default NS foos 21ok(@nodes, 2); 22 23# Set namespace mappings. 24 25$xp->set_namespace("foo" => "flubber.example.com"); 26$xp->set_namespace("goo" => "foobar.example.com"); 27 28# warn "TEST 6\n"; 29@nodes = $xp->findnodes('//foo:foo'); # should find flubber.com foos 30# warn "found: ", scalar @nodes, "\n"; 31ok(@nodes, 2); 32 33@nodes = $xp->findnodes('//goo:foo'); # should find foobar.com foos 34ok(@nodes, 3); 35 36@nodes = $xp->findnodes('//foo'); # should find default NS foos 37ok(@nodes, 2); 38 39ok($xp->findvalue('//attr:node/@attr:findme'), 'someval'); 40 41__DATA__ 42<xml xmlns:foo="foobar.example.com" 43 xmlns="flubber.example.com"> 44 <foo> 45 <bar/> 46 <foo/> 47 </foo> 48 <foo:foo> 49 <foo:foo/> 50 <foo:bar/> 51 <foo:bar/> 52 <foo:foo/> 53 </foo:foo> 54 <attr:node xmlns:attr="attribute.example.com" 55 attr:findme="someval"/> 56</xml> 57