[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-unattended/var/se3/unattended/install/linuxaux/opt/perl/lib/site_perl/5.10.0/XML/XPath/ -> NodeSet.pm (source)

   1  # $Id: NodeSet.pm,v 1.17 2002/04/24 13:06:08 matt Exp $
   2  
   3  package XML::XPath::NodeSet;
   4  use strict;
   5  
   6  use XML::XPath::Boolean;
   7  
   8  use overload 
   9          '""' => \&to_literal,
  10                  'bool' => \&to_boolean,
  11          ;
  12  
  13  sub new {
  14      my $class = shift;
  15      bless [], $class;
  16  }
  17  
  18  sub sort {
  19      my $self = CORE::shift;
  20      @$self = CORE::sort { $a->get_global_pos <=> $b->get_global_pos } @$self;
  21      return $self;
  22  }
  23  
  24  sub pop {
  25      my $self = CORE::shift;
  26      CORE::pop @$self;
  27  }
  28  
  29  sub push {
  30      my $self = CORE::shift;
  31      my (@nodes) = @_;
  32      CORE::push @$self, @nodes;
  33  }
  34  
  35  sub append {
  36      my $self = CORE::shift;
  37      my ($nodeset) = @_;
  38      CORE::push @$self, $nodeset->get_nodelist;
  39  }
  40  
  41  sub shift {
  42      my $self = CORE::shift;
  43      CORE::shift @$self;
  44  }
  45  
  46  sub unshift {
  47      my $self = CORE::shift;
  48      my (@nodes) = @_;
  49      CORE::unshift @$self, @nodes;
  50  }
  51  
  52  sub prepend {
  53      my $self = CORE::shift;
  54      my ($nodeset) = @_;
  55      CORE::unshift @$self, $nodeset->get_nodelist;
  56  }
  57  
  58  sub size {
  59      my $self = CORE::shift;
  60      scalar @$self;
  61  }
  62  
  63  sub get_node { # uses array index starting at 1, not 0
  64      my $self = CORE::shift;
  65      my ($pos) = @_;
  66      $self->[$pos - 1];
  67  }
  68  
  69  sub getRootNode {
  70      my $self = CORE::shift;
  71      return $self->[0]->getRootNode;
  72  }
  73  
  74  sub get_nodelist {
  75      my $self = CORE::shift;
  76      @$self;
  77  }
  78  
  79  sub to_boolean {
  80      my $self = CORE::shift;
  81      return (@$self > 0) ? XML::XPath::Boolean->True : XML::XPath::Boolean->False;
  82  }
  83  
  84  sub string_value {
  85      my $self = CORE::shift;
  86      return '' unless @$self;
  87      return $self->[0]->string_value;
  88  }
  89  
  90  sub to_literal {
  91      my $self = CORE::shift;
  92      return XML::XPath::Literal->new(
  93              join('', map { $_->string_value } @$self)
  94              );
  95  }
  96  
  97  sub to_number {
  98      my $self = CORE::shift;
  99      return XML::XPath::Number->new(
 100              $self->to_literal
 101              );
 102  }
 103  
 104  1;
 105  __END__
 106  
 107  =head1 NAME
 108  
 109  XML::XPath::NodeSet - a list of XML document nodes
 110  
 111  =head1 DESCRIPTION
 112  
 113  An XML::XPath::NodeSet object contains an ordered list of nodes. The nodes
 114  each take the same format as described in L<XML::XPath::XMLParser>.
 115  
 116  =head1 SYNOPSIS
 117  
 118      my $results = $xp->find('//someelement');
 119      if (!$results->isa('XML::XPath::NodeSet')) {
 120          print "Found $results\n";
 121          exit;
 122      }
 123      foreach my $context ($results->get_nodelist) {
 124          my $newresults = $xp->find('./other/element', $context);
 125          ...
 126      }
 127  
 128  =head1 API
 129  
 130  =head2 new()
 131  
 132  You will almost never have to create a new NodeSet object, as it is all
 133  done for you by XPath.
 134  
 135  =head2 get_nodelist()
 136  
 137  Returns a list of nodes. See L<XML::XPath::XMLParser> for the format of
 138  the nodes.
 139  
 140  =head2 string_value()
 141  
 142  Returns the string-value of the first node in the list.
 143  See the XPath specification for what "string-value" means.
 144  
 145  =head2 to_literal()
 146  
 147  Returns the concatenation of all the string-values of all
 148  the nodes in the list.
 149  
 150  =head2 get_node($pos)
 151  
 152  Returns the node at $pos. The node position in XPath is based at 1, not 0.
 153  
 154  =head2 size()
 155  
 156  Returns the number of nodes in the NodeSet.
 157  
 158  =head2 pop()
 159  
 160  Equivalent to perl's pop function.
 161  
 162  =head2 push(@nodes)
 163  
 164  Equivalent to perl's push function.
 165  
 166  =head2 append($nodeset)
 167  
 168  Given a nodeset, appends the list of nodes in $nodeset to the end of the
 169  current list.
 170  
 171  =head2 shift()
 172  
 173  Equivalent to perl's shift function.
 174  
 175  =head2 unshift(@nodes)
 176  
 177  Equivalent to perl's unshift function.
 178  
 179  =head2 prepend($nodeset)
 180  
 181  Given a nodeset, prepends the list of nodes in $nodeset to the front of
 182  the current list.
 183  
 184  =cut


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1