I am trying to perform a normal query into an XML document where something has been declared about the default namespace. If the xmlns="..." part of the data is removed then this test succeeds. What needs to change in my XPath query //lastName or XML::LibXML parser object so that this query will succeed?
use Test::More tests => 2; use XML::LibXML (); { my $xml = <<'XML'; <?xml version="1.0" standalone="yes"?> <sdnList> <sdnEntry> <lastName>Hello world!</lastName> </sdnEntry> </sdnList> XML my $parser = XML::LibXML->new; my $doc = $parser->parse_string($xml); my $result = $doc->findvalue('//lastName'); is( $result, "Hello world!", "No namespace" ); } { my $xml = <<'XML'; <?xml version="1.0" standalone="yes"?> <sdnList xmlns="http://tempuri.org/sdnList.xsd"> <sdnEntry> <lastName>Hello world!</lastName> </sdnEntry> </sdnList> XML my $parser = XML::LibXML->new; my $doc = $parser->parse_string($xml); my $result = $doc->findvalue('//lastName'); is( $result, "Hello world!", "Namespace" ); }
Results
1..2 ok 1 - No namespace not ok 2 - Namespace # Failed test 'Namespace' # in sdl2.pl at line 30. # got: '' # expected: 'Hello world!' # Looks like you failed 1 test of 2.
In reply to Namespaced XML::LibXML XPath query by diotalevi
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |