def parse_attr(attr, value)
case attr
when NameAttrName
if directelement? or elementform == 'qualified'
@name = XSD::QName.new(targetnamespace, value.source)
else
@name = XSD::QName.new(nil, value.source)
end
when FormAttrName
@form = value.source
if @form != 'qualified' and @name.namespace
@name = XSD::QName.new(nil, @name.name)
end
@form
when TypeAttrName
@type = value
when RefAttrName
@ref = value
when MaxOccursAttrName
if parent.is_a?(All)
if value.source != '1'
raise Parser::AttributeConstraintError.new(
"cannot parse #{value} for #{attr}")
end
end
if value.source == 'unbounded'
@maxoccurs = nil
else
@maxoccurs = Integer(value.source)
end
value.source
when MinOccursAttrName
if parent.is_a?(All)
unless ['0', '1'].include?(value.source)
raise Parser::AttributeConstraintError.new(
"cannot parse #{value} for #{attr}")
end
end
@minoccurs = Integer(value.source)
when NillableAttrName
@nillable = to_boolean(value)
when DefaultAttrName
@default = value.source
when AbstractAttrName
@abstract = to_boolean(value)
else
nil
end
end