def self.parse_schema_element_definition(schema_element, default_ns)
if schema_element[0] == :choice
parse_schema_definition(schema_element, default_ns)
elsif schema_element[0].is_a?(Array)
parse_schema_definition(schema_element, default_ns)
else
varname, info, occurrence = schema_element
mapped_class_str, elename = info
if occurrence
minoccurs, maxoccurs = occurrence
else
minoccurs, maxoccurs = 1, 1
end
as_any = as_array = false
if /\[\]$/ =~ mapped_class_str
mapped_class_str = mapped_class_str.sub(/\[\]$/, '')
if mapped_class_str.empty?
mapped_class_str = nil
end
as_array = true
end
if mapped_class_str
mapped_class = Mapping.class_from_name(mapped_class_str)
if mapped_class.nil?
warn("cannot find mapped class: #{mapped_class_str}")
end
end
if elename == XSD::AnyTypeName
as_any = true
elsif elename.nil?
elename = XSD::QName.new(default_ns, varname)
end
SchemaElementDefinition.new(
varname, mapped_class, elename, minoccurs, maxoccurs, as_any, as_array)
end
end