3 # A utility class that can store SAX events and replay them back to some SAX
4 # handler as many times as you'd like. Useful for both cloning and including.
8 package XML::TemplateSAX::Buffer;
9 use base qw(XML::SAX::Base);
24 my ($self, $data) = @_;
25 push @{$self->{'events'}}, [ 'E', $data ];
29 my ($self, $data) = @_;
30 push @{$self->{'events'}}, [ 'C', $data ];
34 my ($self, $data) = @_;
35 push @{$self->{'events'}}, [ 'c', $data ];
38 sub processing_instruction {
39 my ($self, $data) = @_;
40 push @{$self->{'events'}}, [ 'p', $data ];
44 my ($self, $data) = @_;
45 push @{$self->{'events'}}, [ 'e', $data ];
49 my ($self, $dest) = @_;
51 for my $event (@{$self->{'events'}}) {
52 my ($type, $data) = @$event;
54 $dest->start_element($data);
55 } elsif ($type eq 'C') {
56 $dest->characters($data);
57 } elsif ($type eq 'c') {
58 $dest->comment($data);
59 } elsif ($type eq 'p') {
60 $dest->processing_instruction($data);
61 } elsif ($type eq 'e') {
62 $dest->end_element($data);