in reply to XML namespaces

I tried to use registerNs but no luck :(

When you use XML::LibXML::XPathContext, remember to call findnodes on that object for the namespaces to take effect. The following works fine for me (output "<node1>TEXT 1"</node1>") for your example file. Note how I'm passing the context of the second findnodes call as the second argument, and I adjusted your XPath expressions to use the namespace, since it applies to all nodes in the document.

use warnings; use strict; use XML::LibXML; my $doc = XML::LibXML->load_xml( location => '/tmp/foo.xml' ); my $xpc = XML::LibXML::XPathContext->new($doc); $xpc->registerNs('foo', 'urn:foo:names:tc:doc:document:1.2'); foreach my $tu ($xpc->findnodes('/foo:doc/foo:body/foo:node')) { for my $node ($xpc->findnodes('foo:node1', $tu)) { print "$node\n"; } }