XML :: LibXML: doc - root

Является ли здесь призыв documentElemtent в первом примере лишним?

#!/usr/bin/env perl
use warnings;
use strict;
use XML::LibXML;
my $file = 'xml_file';

my $doc = XML::LibXML->load_xml( location => $file );
my $root = $doc->documentElement();
my $xpc = XML::LibXML::XPathContext->new( $root );
# ...
say $_->nodeName for $xpc->findnodes( '/' );

выходы

#document
$doc = XML::LibXML->load_xml( location => $file );
$xpc = XML::LibXML::XPathContext->new( $doc );
# ...
say $_->nodeName for $xpc->findnodes( '/' );

выходы также

#document
1 ответ

Любые префиксы, определенные в узле темы, принимаются xpc, поэтому они разные, если на корневом узле есть префиксы.

use warnings;
use strict;
use feature qw( say );

use XML::LibXML qw( );

my $xml = <<'__EOI__';

__EOI__

my $doc = XML::LibXML->load_xml( string => $xml );
my $root = $doc->documentElement();

{
 my $xpc = XML::LibXML::XPathContext->new($doc);
 say "doc:";
 say $_->nodeName for $xpc->findnodes('foo:bar');
}

say "";

{
 my $xpc = XML::LibXML::XPathContext->new($root);
 say "root:";
 say $_->nodeName for $xpc->findnodes('foo:bar');
}
doc:

root:
foo:bar

licensed under cc by-sa 3.0 with attribution.