package XML::XPathScript::Processor::LibXML; use strict; use warnings; use base qw/ XML::XPathScript::Processor /; our $VERSION = '1.54'; sub get_namespace { my $ns = $_[1]->getNamespaces(); return $ns ? $ns->getData() : () ; } sub is_text_node { # little catch: XML::LibXML::Comment is a # XML::LibXML::Text return $_[1]->isa('XML::LibXML::Text') && !$_[1]->isa('XML::LibXML::Comment'); } sub get_attributes { return $_[1]->attributes } sub get_text_content { return $_[1]->textContent } sub get_child_nodes { return $_[1]->childNodes } sub get_node_name { return $_[1]->localname } sub is_element_node { return $_[1]->isa( 'XML::LibXML::Element' ); } sub is_comment_node { return $_[1]->isa( 'XML::LibXML::Comment' ); } sub is_pi_node { return $_[1]->isa( 'XML::LibXML::PI' ); } sub is_nodelist { return $_[1]->isa( 'XML::LibXML::NodeList' ); } sub get_attribute { return $_[1]->isa( 'XML::LibXML::Namespace' ) ? ' xmlns:' . $_[1]->getName() . q{="} . $_[1]->value() . q{" } : $_[1]->toString( 0, 1 ) ; } sub translate_node { my ( $self, $node, $params ) = @_; $node = $node->documentElement if $node->isa( 'XML::LibXML::Document' ); return $self->SUPER::translate_node( $node, $params ); } 1;