In Files
- rexml/validation/validation.rb
 
Class/Module Index
          ![show/hide quicksearch [+]](../../images/find.png)
        
        - Array
 - Fixnum
 - Float
 - Object
 - REXML
 - REXML::AttlistDecl
 - REXML::Attribute
 - REXML::Attributes
 - REXML::CData
 - REXML::Child
 - REXML::Comment
 - REXML::DTD
 - REXML::DTD::AttlistDecl
 - REXML::DTD::ElementDecl
 - REXML::DTD::EntityDecl
 - REXML::DTD::NotationDecl
 - REXML::DTD::Parser
 - REXML::Declaration
 - REXML::DocType
 - REXML::Document
 - REXML::Element
 - REXML::ElementDecl
 - REXML::Elements
 - REXML::Encoding
 - REXML::Entity
 - REXML::EntityConst
 - REXML::ExternalEntity
 - REXML::Formatters
 - REXML::Formatters::Default
 - REXML::Formatters::Pretty
 - REXML::Formatters::Transitive
 - REXML::Functions
 - REXML::IOSource
 - REXML::Instruction
 - REXML::Light
 - REXML::Light::Node
 - REXML::Namespace
 - REXML::Node
 - REXML::NotationDecl
 - REXML::Output
 - REXML::Parent
 - REXML::ParseException
 - REXML::Parsers
 - REXML::Parsers::BaseParser
 - REXML::Parsers::LightParser
 - REXML::Parsers::PullEvent
 - REXML::Parsers::PullParser
 - REXML::Parsers::SAX2Parser
 - REXML::Parsers::StreamParser
 - REXML::Parsers::TreeParser
 - REXML::Parsers::UltraLightParser
 - REXML::Parsers::XPathParser
 - REXML::QuickPath
 - REXML::SAX2Listener
 - REXML::Security
 - REXML::Source
 - REXML::SourceFactory
 - REXML::StreamListener
 - REXML::SyncEnumerator
 - REXML::Text
 - REXML::UndefinedNamespaceException
 - REXML::Validation
 - REXML::Validation::Choice
 - REXML::Validation::Event
 - REXML::Validation::Interleave
 - REXML::Validation::OneOrMore
 - REXML::Validation::Optional
 - REXML::Validation::Ref
 - REXML::Validation::RelaxNG
 - REXML::Validation::Sequence
 - REXML::Validation::State
 - REXML::Validation::ValidationException
 - REXML::Validation::Validator
 - REXML::Validation::ZeroOrMore
 - REXML::XMLDecl
 - REXML::XMLTokens
 - REXML::XPath
 - REXML::XPathParser
 - Symbol
 
REXML::Validation::Validator
Constants
Public Instance Methods
            reset()
            
          
          
           
               # File rexml/validation/validation.rb, line 8
def reset
  @current = @root
  @root.reset
  @root.previous = true
  @attr_stack = []
  self
end
             
            
            validate( event )
            
          
          
           
               # File rexml/validation/validation.rb, line 18
def validate( event )
  @attr_stack = [] unless defined? @attr_stack
  match = @current.next(event)
  raise ValidationException.new( "Validation error.  Expected: "+
    @current.expected.join( " or " )+" from #{@current.inspect} "+
    " 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, = event[2].find { |key,value|
        sattr[1] = key
        m = @current.next( sattr )
        if m
          # If the state has text children...
          if m.matches?( eattr )
            @current = m
          else
            text[1] = value
            m = m.next( text )
            text[1] = nil
            return false unless m
            @current = m if m
          end
          m = @current.next( 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