1# $Id: Comment.pm,v 1.5 2000/09/05 13:05:46 matt Exp $ 2 3package XML::XPath::Node::Comment; 4 5use strict; 6use vars qw/@ISA/; 7 8@ISA = ('XML::XPath::Node'); 9 10package XML::XPath::Node::CommentImpl; 11 12use vars qw/@ISA/; 13@ISA = ('XML::XPath::NodeImpl', 'XML::XPath::Node::Comment'); 14use XML::XPath::Node ':node_keys'; 15 16sub new { 17 my $class = shift; 18 my ($comment) = @_; 19 20 my $pos = XML::XPath::Node->nextPos; 21 22 my @vals; 23 @vals[node_global_pos, node_comment] = 24 ($pos, $comment); 25 my $self = \@vals; 26 27 bless $self, $class; 28} 29 30sub getNodeType { COMMENT_NODE } 31 32sub isCommentNode { 1; } 33 34sub getNodeValue { 35 return shift->[node_comment]; 36} 37 38sub getData { 39 shift->getNodeValue; 40} 41 42sub setNodeValue { 43 shift->[node_comment] = shift; 44} 45 46sub _to_sax { 47 my $self = shift; 48 my ($doch, $dtdh, $enth) = @_; 49 50 $doch->comment( { Data => $self->getValue } ); 51} 52 53sub comment_escape { 54 my $data = shift; 55 $data =~ s/--/--/g; 56 return $data; 57} 58 59sub string_value { 60 my $self = shift; 61 return $self->[node_comment]; 62} 63 64sub toString { 65 my $self = shift; 66 return '<!--' . comment_escape($self->[node_comment]) . '-->'; 67} 68 691; 70__END__ 71 72=head1 NAME 73 74Comment - an XML comment: <!--comment--> 75 76=head1 API 77 78=head2 new ( data ) 79 80Create a new comment node. 81 82=head2 getValue / getData 83 84Returns the value in the comment 85 86=head2 toString 87 88Returns the comment with -- encoded as a numeric entity (if it 89exists in the comment text). 90 91=cut 92