You are overcomplicating the problem. Do not use
setDocumentElement, it creates a new root element. The constructor of XPathContext takes a context node as a parameter, not a file. This is a
Short, Self Contained, Correct Example:
#!/usr/bin/perl
use warnings;
use strict;
use XML::LibXML;
my $dom = XML::LibXML->load_xml(string => << '__XML__');
<Article> <!-- fixed typo -->
<Main>
<Sect>
<H4>Include</H4>
.....
<P1> This is the criteria</P1>
<L>
<LI>
<LI_Label>1.</LI_Label>
<LI_Title>Critera 1</LI_Title>
</LI>
<LI>
<LI_Label>2.</LI_Label>
<LI_Title>Critera 2</LI_Title>
</LI>
<LI>
<LI_Label>3.</LI_Label>
<LI_Title>Critera 3</LI_Title>
</LI>
<LI>
<LI_Label>4.</LI_Label>
<LI_Title>Critera 3</LI_Title>
</LI>
</L> <!-- fixed missing closing tag -->
</Sect>
</Main>
</Article>
__XML__
my $xc = XML::LibXML::XPathContext->new;
my $count = $xc->findvalue('count(//Article//Sect//LI)', $dom);
print "$count list nodes found.\n" if $count;