# File rexml/xpath_parser.rb, line 313
  def axe( axis_name, path, nodeset ) 
			#puts "axe #{axis_name}, #{path} #{puta nodeset}" if DEBUG
			return unless nodeset

			case axis_name
			when 'self'
				axe_helper(path, nodeset)
			when /^descendant/u
				results = []
				a = ""
				recurse( nodeset ) { |node| 
					a, b = axe_helper(path, [node]) if node.kind_of? Element 
					results += b if b
				}
				results.uniq!
				#puts "RESULTS ARE NOW #{puta results}" if DEBUG
				[a, results]

			when /^ancestor/u
				ancestors = []
				ancestors += nodeset if axis_name =~ /self$/
				nodeset.each do |element|
					while element.parent
						element = element.parent
						ancestors << element
					end
				end
				#puts "ancestors is #{puta ancestors}" if DEBUG
				axe_helper( path, ancestors)

			when "child"
				results = []
				#puts "PATH IS '#{path}'" if DEBUG
				p = path
				nodeset.each do |element|
					if element.kind_of? Element
						#puts "YIELDING CHILDREN OF #{element.name if element.kind_of? Element}" if DEBUG
						p,r = axe_helper( path, element.to_a )
						#puts "P IS NOW '#{p}'" if DEBUG
						results += r
					end
				end
				#puts "CHILD: P IS NOW '#{p}'" if DEBUG
				[p, results]

			when "attribute"
				results = []
				#puts "ATTRIBUTE: NODESET SIZE IS #{nodeset.size}" if DEBUG
				p = ''
				nodeset.each do |element|
					p,r=axe_helper(path,element.attributes.values.flatten) if element.kind_of? Element
					#puts "#{path} => #{p}" if DEBUG
					results += r
					results << nil if r.size < 1
				end
				#puts "ATTRIBUTE: P IS NOW '#{p}'" if DEBUG
				#puts "results is now #{puta results}" if DEBUG
				results.collect!{ |a| a.value if a }
				[p,results]

			when "parent"
				axe_helper(path, nodeset.collect{|element| element.parent}.uniq)

			when "following-sibling"
				siblings = []
				nodeset.each do |el|
					while el = el.next_sibling
						siblings << el
					end
				end
				axe_helper(path, siblings.uniq)

			when "following"
				results = []
				p = ""
				nodeset.each do |node|
					set = following( node )
					p, res = axe_helper( path, set )
					results += res
				end
				return [p, results]
				#axe_helper(path, nodeset.collect{|element| element.next_node}.uniq)

			when "preceding-sibling"
				siblings = []
				nodeset.each do |el|
					while el = el.previous_sibling
						siblings << el
					end
				end
				axe_helper(path, siblings.uniq)

			when "preceding"
				results = []
				p = ""
				nodeset.each do |node|
					set = preceding( node )
					p, res = axe_helper( path, set )
					results += res
				end
				return [p, results]
				#axe_helper(path, nodeset.collect{|element| element.previous_node}.uniq)

			when "namespace"
				axe_helper( path, nodeset.collect{|el| el.namespace} )
			end
		end