$self->SUPER::end_element($data);
}
+package XML::TemplateSAX::Cleaner;
+use base qw(XML::SAX::Base);
+
+sub start_element {
+ my ($self, $data) = @_;
+ my $attrs = $data->{'Attributes'};
+
+ for my $a (keys %$attrs) {
+ if ($attrs->{$a}->{'NamespaceURI'} eq 'http://template.sesse.net/') {
+ delete $attrs->{$a};
+ }
+ }
+
+ $self->SUPER::start_element($data);
+}
+
package XML::TemplateSAX;
sub process_file {
my ($filename, $obj, $clean) = @_;
+ $clean = 1 unless (defined($clean));
+ my ($writer, $cleaner, $filter, $parser);
my $str = '';
# FIXME: hardcoding expat = not good?
- my $writer = XML::SAX::Writer->new(Output => \$str);
- my $filter = XML::TemplateSAX::Handler->new(Handler => $writer, Content => $obj);
- my $parser = XML::SAX::Expat->new(Handler => $filter);
+ $writer = XML::SAX::Writer->new(Output => \$str);
+
+ if ($clean) {
+ $cleaner = XML::TemplateSAX::Cleaner->new(Handler => $writer, Content => $obj);
+ $filter = XML::TemplateSAX::Handler->new(Handler => $cleaner, Content => $obj);
+ } else {
+ $filter = XML::TemplateSAX::Handler->new(Handler => $writer, Content => $obj);
+ }
+
+ $parser = XML::SAX::Expat->new(Handler => $filter);
$parser->parse_file($filename);
return $str;