class REXML::Validation::RelaxNG

Implemented:

  • empty

  • element

  • attribute

  • text

  • optional

  • choice

  • oneOrMore

  • zeroOrMore

  • group

  • value

  • interleave

  • mixed

  • ref

  • grammar

  • start

  • define

Not implemented:

  • data

  • param

  • include

  • externalRef

  • notAllowed

  • anyName

  • nsName

  • except

  • name

Constants

EMPTY
INFINITY
TEXT

Attributes

count[RW]
current[RW]
references[R]

Public Class Methods

new(source) click to toggle source

FIXME: Namespaces

# File lib/rexml/validation/relaxng.rb, line 45
def initialize source
 parser = REXML::Parsers::BaseParser.new( source )
 @count = 0
 @references = {}
 @root = @current = Sequence.new(self)
 @root.previous = true
 states = [ @current ]
 begin
 event = parser.pull
 case event[0]
 when :start_element
 case event[1]
 when "empty"
 when "element", "attribute", "text", "value"
 states[-1] << event
 when "optional"
 states << Optional.new( self )
 states[-2] << states[-1]
 when "choice"
 states << Choice.new( self )
 states[-2] << states[-1]
 when "oneOrMore"
 states << OneOrMore.new( self )
 states[-2] << states[-1]
 when "zeroOrMore"
 states << ZeroOrMore.new( self )
 states[-2] << states[-1]
 when "group"
 states << Sequence.new( self )
 states[-2] << states[-1]
 when "interleave"
 states << Interleave.new( self )
 states[-2] << states[-1]
 when "mixed"
 states << Interleave.new( self )
 states[-2] << states[-1]
 states[-1] << TEXT
 when "define"
 states << [ event[2]["name"] ]
 when "ref"
 states[-1] << Ref.new( event[2]["name"] )
 when "anyName"
 states << AnyName.new( self )
 states[-2] << states[-1]
 when "nsName"
 when "except"
 when "name"
 when "data"
 when "param"
 when "include"
 when "grammar"
 when "start"
 when "externalRef"
 when "notAllowed"
 end
 when :end_element
 case event[1]
 when "element", "attribute"
 states[-1] << event
 when "zeroOrMore", "oneOrMore", "choice", "optional",
 "interleave", "group", "mixed"
 states.pop
 when "define"
 ref = states.pop
 @references[ ref.shift ] = ref
 #when "empty"
 end
 when :end_document
 states[-1] << event
 when :text
 states[-1] << event
 end
 end while event[0] != :end_document
end

Public Instance Methods

receive(event) click to toggle source
# File lib/rexml/validation/relaxng.rb, line 121
def receive event
 validate( event )
end