use strict; use warnings; use XML::Rules; my $rules =XML::Rules->new( style => 'parser', rules => { 'inline-formula' => sub { # (tag, attrs, context, parents, parser) open my $OUT, '>:utf8', $_[1]{id} . ".xml"; # open file named after the contents of the id attribute print $OUT $_[4]->toXML($_[0], $_[1]); # serialize the tag with attributes close $OUT; }, '_default' => 'raw', # make sure we keep everything else intact } ); $rules->parse( *DATA ); __DATA__ τ τ τ