use XML::SAX::Expat;
use XML::SAX::Writer;
-
-package XML::TemplateSAX::Handler;
-use base qw(XML::SAX::Base);
-
-sub new {
- my $class = shift;
- my %options = @_;
-
- my $self = {
- obj => $options{'Content'},
- Handler => $options{'Handler'}
- };
- bless($self, $class);
- return $self;
-}
-
-sub start_element {
- my ($self, $data) = @_;
-
- $self->SUPER::start_element($data);
-}
+use XML::TemplateSAX::Cleaner;
+use XML::TemplateSAX::Handler;
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;