Class | REXML::Validation::RelaxNG
In: | rexml/validation/relaxng.rb
Parent: | Object

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

### Methods

new receive

### Included Modules

Validator

### Constants

INFINITY | = | 1.0 / 0.0
EMPTY | = | Event.new( nil )
TEXT | = | [:start_element, "text"]

### Attributes

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

### Public Class methods

new(source)

FIXME: Namespaces

[Source]

    # File 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)

[Source]

    # File rexml/validation/relaxng.rb, line 121
          def receive event
            validate( event )
          end

[Validate]