use warnings;
use strict;
use XML::LibXML;
my $doc = XML::LibXML->load_xml( location => 'example.xhtml',
no_network=>1, recover=>1 );
my $xpc = XML::LibXML::XPathContext->new($doc);
$xpc->registerNs('html', 'http://www.w3.org/1999/xhtml');
my @ids2text = map { [ $_->getAttribute('id'), $_->textContent ] }
$xpc->findnodes(q{//html:div[@class='data']});
$_->[1] =~ s/\W+//g for @ids2text;
print join ", ", map sprintf("%s=%s", @$_), @ids2text;
####
my @ids2text = map { [ $_->getAttribute('id'), $_->textContent ] }
$doc->findnodes(q{//div[@class='data']});
##
##
my $xpc = XML::LibXML::XPathContext->new($doc);
$xpc->registerNs('html', 'http://www.w3.org/1999/xhtml');
my @ids2text = map { [ $_->getAttribute('id'), $_->textContent ] }
$xpc->findnodes(q{//html:div[@class='data']});