#!/usr/bin/perl use warnings; use strict; use XML::LibXML; my $xml = ' '; my $dom = 'XML::LibXML'->load_xml(string => $xml) or die; my $xpc = 'XML::LibXML::XPathContext'->new($dom); for my $element ($xpc->findnodes('//xsl:element')) { my ($name_attr) = $xpc->findnodes('@name', $element); $element->removeAttribute('name'); $element->setNodeName($name_attr->getValue); } print $dom;