# File temp/validation/validation.rb, line 12
      def validate( event ) 
        #puts "Current: #@current"
        #puts "Event: #{event.inspect}"
        #puts "#"*80
        @attr_stack = [] unless defined? @attr_stack
        match = @current[ event ]
        raise ValidationException.new( "Validation error.  Expected: "+
          @current.keys.collect{|e| e.inspect }.join(" or ")+
          " but got #{Event.new( event[0], event[1] ).inspect}" ) unless match
        @current = match

        # Check for attributes
        case event[0]
        when :start_element
          @attr_stack << event[2]
          begin
            sattr = [:start_attribute, nil]
            eattr = [:end_attribute]
            text = [:text, nil]
            k,v = event[2].find { |k,v| 
              sattr[1] = k
              m = @current[ sattr ] 
              if m 
                # If the state has text children...
                if m[ eattr ]
                  @current = m
                else
                  text[1] = v
                  m = m[ text ]
                  text[1] = nil
                  @current = m if m
                end
                m = @current[ eattr ]
                if m
                  @current = m
                  true
                else
                  false
                end
              else
                false
              end
            }
            event[2].delete(k) if k
          end while k
        when :end_element
          attrs = @attr_stack.pop
          raise ValidationException.new( "Validation error.  Illegal "+
            " attributes: #{attrs.inspect}") if attrs.length > 0
        end
      end