+sub process_file {
+ my ($filename, $obj, $clean) = @_;
+
+ my $str = '';
+ my $writer = XML::SAX::Writer->new(Output => \$str);
+
+ process_file_to_handler($filename, $writer, $obj, $clean);
+
+ return $str;
+}
+
+sub process_file_to_buffer {
+ my ($filename, $obj, $clean) = @_;
+
+ my $buffer = XML::TemplateSAX::Buffer->new;
+ process_file_to_handler($filename, $buffer, $obj, $clean);
+
+ return $buffer;
+}
+
+sub alternate {
+ my ($tag, $array, @elems) = @_;
+
+ my $i = 0;
+ my $num = scalar @elems;
+
+ for my $ref (@$array) {
+ if (defined($ref)) {
+ $ref->{$tag} = $elems[$i++ % $num];
+ }
+ }
+
+ return $array;
+}
+