I\'m using XML::LibXML to parse an XML document with a namespace. I therefore use XML::LibXML::XPathContext to findnodes using the XPath //u:model
XPath allows ignoring namespaces by using the function local-name:
use XML::LibXML;
my $dom = XML::LibXML->load_xml( IO => \*DATA );
for my $node ( $dom->findnodes('//*[local-name()="model"]') ) {
my $mh = $node->findvalue('*[local-name()="mh"]');
my $attr = $node->findvalue('*[local-name()="attribute"]');
print "mh = $mh, attr = $attr\n";
}
This removes the need to specify an context for a single namespace document like in the question.
Reference: Re^2: XML::LibXML and namespaces