1package XML::XPath::Node::Namespace; 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::NamespaceImpl; 11 12use vars qw/@ISA/; 13@ISA = ('XML::XPath::NodeImpl', 'XML::XPath::Node::Namespace'); 14use XML::XPath::Node ':node_keys'; 15 16sub new { 17 my $class = shift; 18 my ($prefix, $expanded) = @_; 19 20 my $pos = XML::XPath::Node->nextPos; 21 22 my @vals; 23 @vals[node_global_pos, node_prefix, node_expanded] = 24 ($pos, $prefix, $expanded); 25 my $self = \@vals; 26 27 bless $self, $class; 28} 29 30sub getNodeType { NAMESPACE_NODE } 31 32sub isNamespaceNode { 1; } 33 34sub getPrefix { 35 my $self = shift; 36 $self->[node_prefix]; 37} 38 39sub getExpanded { 40 my $self = shift; 41 $self->[node_expanded]; 42} 43 44sub getValue { 45 my $self = shift; 46 $self->[node_expanded]; 47} 48 49sub getData { 50 my $self = shift; 51 $self->[node_expanded]; 52} 53 54sub string_value { 55 my $self = shift; 56 $self->[node_expanded]; 57} 58 59sub toString { 60 my $self = shift; 61 my $string = ''; 62 return '' unless defined $self->[node_expanded]; 63 if ($self->[node_prefix] eq '#default') { 64 $string .= ' xmlns="'; 65 } 66 else { 67 $string .= ' xmlns:' . $self->[node_prefix] . '="'; 68 } 69 $string .= XML::XPath::Node::XMLescape($self->[node_expanded], '"&<'); 70 $string .= '"'; 71} 72 731; 74__END__ 75 76=head1 NAME 77 78Namespace - an XML namespace node 79 80=head1 API 81 82=head2 new ( prefix, expanded ) 83 84Create a new namespace node, expanded is the expanded namespace URI. 85 86=head2 getPrefix 87 88Returns the prefix 89 90=head2 getExpanded 91 92Returns the expanded URI 93 94=head2 toString 95 96Returns a string that you can add to the list 97of attributes of an element: xmlns:prefix="expanded" 98 99=cut 100