Основная причина использования элементов XPathContext - это пространства имен. В вашем документе нет пространств имен, поэтому XPathContexts ничего не добавляет к вашему запросу. Теперь представьте, что у вас действительно есть следующий xml
my $doc = $parser->parse_string(<<EOT);
<?xml version="1.0"?>
<xml xmlns="http://my.company.com/ns/nsone"
xmlns:ns2="http://your.company.com/nstwo">
Text im Dokument
<ns2:element id="myID" name="myname" style="old" />
<object objid="001" objname="Object1" />
<element id="002" name="myname" />
</xml>
EOT
Вам потребуется определить XPathContext, чтобы определить пространства имен, чтобы вы могли выполнять запросы XPath к пространству имен:
my $root = $doc->documentElement;
my $xc = XML::LibXML::XPathContext->new( $root );
$xc->registerNs("ns2", "http://your.company.com/nstwo");
$xc->registerNs("ns1", "http://my.company.com/nsone");
my $nodes = $xc->findnodes( '/ns1:xml/ns2:element[@id="myID"]' );
В противном случае у вас нет простого способа использовать операторы XPath с поддержкой пространства имен.