1package XML::XPath::Node::Text;
2
3$VERSION = '1.44';
4
5use strict; use warnings;
6use vars qw/@ISA/;
7
8@ISA = ('XML::XPath::Node');
9
10package XML::XPath::Node::TextImpl;
11
12use vars qw/@ISA/;
13@ISA = ('XML::XPath::NodeImpl', 'XML::XPath::Node::Text');
14use XML::XPath::Node ':node_keys';
15
16sub new {
17    my $class = shift;
18    my ($text) = @_;
19
20        my $pos = XML::XPath::Node->nextPos;
21
22        my @vals;
23        @vals[node_global_pos, node_text] = ($pos, $text);
24    my $self = \@vals;
25
26    bless $self, $class;
27}
28
29sub getNodeType { TEXT_NODE }
30
31sub isTextNode { 1; }
32
33sub appendText {
34    my $self = shift;
35    my ($text) = @_;
36    $self->[node_text] .= $text;
37}
38
39sub getNodeValue {
40    my $self = shift;
41    $self->[node_text];
42}
43
44sub getData {
45    my $self = shift;
46    $self->[node_text];
47}
48
49sub setNodeValue {
50    my $self = shift;
51    $self->[node_text] = shift;
52}
53
54sub _to_sax {
55    my $self = shift;
56    my ($doch, $dtdh, $enth) = @_;
57
58    $doch->characters( { Data => $self->getValue } );
59}
60
61sub string_value {
62    my $self = shift;
63    $self->[node_text];
64}
65
66sub toString {
67    my $self = shift;
68    XML::XPath::Node::XMLescape($self->[node_text], "<&");
69}
70
711;
72__END__
73
74=head1 NAME
75
76Text - an XML text node
77
78=head1 API
79
80=head2 new ( text )
81
82Create a new text node.
83
84=head2 getValue / getData
85
86Returns the text
87
88=head2 string_value
89
90Returns the text
91
92=head2 appendText ( text )
93
94Adds the given text string to this node.
95
96=cut
97