Well, you could use args().
i.e.
#!/usr/bin/perl -l
use XML::Smart;
my $x = XML::Smart->new(<<'XML');
<?xml version="1.0" encoding="iso-8859-1"?>
<hosts>
<server os="linux" type="redhat" version="8.0">
<address>192.168.0.1</address>
<address>192.168.0.2</address>
</server>
<server os="linux" type="suse" version="7.0">
<address>192.168.1.10</address>
<address>192.168.1.20</address>
</server>
<server address="192.168.2.100" os="linux" type="conectiva" versio
+n="9.0"/>
</hosts>
XML
$,=$";
print $_->key . ":" , $_->args for $x->cut_root->nodes;
__END__
server: os type version
server: os type version
server: address os type version