Class | REXML::Validation::RelaxNG |
In: |
lib/rexml/validation/relaxng.rb
|
Parent: | Object |
Implemented:
Not implemented:
INFINITY | = | 1.0 / 0.0 |
EMPTY | = | Event.new( nil ) |
TEXT | = | [:start_element, "text"] |
count | [RW] | |
current | [RW] | |
references | [R] |
FIXME: Namespaces
# File lib/rexml/validation/relaxng.rb, line 45 45: def initialize source 46: parser = REXML::Parsers::BaseParser.new( source ) 47: 48: @count = 0 49: @references = {} 50: @root = @current = Sequence.new(self) 51: @root.previous = true 52: states = [ @current ] 53: begin 54: event = parser.pull 55: case event[0] 56: when :start_element 57: case event[1] 58: when "empty" 59: when "element", "attribute", "text", "value" 60: states[-1] << event 61: when "optional" 62: states << Optional.new( self ) 63: states[-2] << states[-1] 64: when "choice" 65: states << Choice.new( self ) 66: states[-2] << states[-1] 67: when "oneOrMore" 68: states << OneOrMore.new( self ) 69: states[-2] << states[-1] 70: when "zeroOrMore" 71: states << ZeroOrMore.new( self ) 72: states[-2] << states[-1] 73: when "group" 74: states << Sequence.new( self ) 75: states[-2] << states[-1] 76: when "interleave" 77: states << Interleave.new( self ) 78: states[-2] << states[-1] 79: when "mixed" 80: states << Interleave.new( self ) 81: states[-2] << states[-1] 82: states[-1] << TEXT 83: when "define" 84: states << [ event[2]["name"] ] 85: when "ref" 86: states[-1] << Ref.new( event[2]["name"] ) 87: when "anyName" 88: states << AnyName.new( self ) 89: states[-2] << states[-1] 90: when "nsName" 91: when "except" 92: when "name" 93: when "data" 94: when "param" 95: when "include" 96: when "grammar" 97: when "start" 98: when "externalRef" 99: when "notAllowed" 100: end 101: when :end_element 102: case event[1] 103: when "element", "attribute" 104: states[-1] << event 105: when "zeroOrMore", "oneOrMore", "choice", "optional", 106: "interleave", "group", "mixed" 107: states.pop 108: when "define" 109: ref = states.pop 110: @references[ ref.shift ] = ref 111: #when "empty" 112: end 113: when :end_document 114: states[-1] << event 115: when :text 116: states[-1] << event 117: end 118: end while event[0] != :end_document 119: end