docs: def get_field(self, schema):
          """Get the requested type definition from the schema and return the
          appropriate :class:`~eulxml.xmlmap.fields.Field`.
  
          :param schema: instance of :class:`eulxml.xmlmap.core.XsdSchema`
          :rtype: :class:`eulxml.xmlmap.fields.Field`
          """
          type = schema.get_type(self.schema_type)
          logger.debug('Found schema type %s; base type %s, restricted values %s' % \
                       (self.schema_type, type.base_type(), type.restricted_values))
          kwargs = {}
          if type.restricted_values:
              # field has a restriction with enumerated values - pass as choices to field
              # - empty value at beginning of list for unset value; for required fields,
              #   will force user to select a value, rather than first item being default
              choices = []
              choices.extend(type.restricted_values)
              # restricted values could include a blank
              # if it's there, remove it so we don't get two
              if '' in choices:
                  choices.remove('')
              choices.insert(0, '')   # add blank choice at the beginning of the list
              kwargs['choices'] = choices
  
          # TODO: possibly also useful to look for pattern restrictions
  
          basetype = type.base_type()
          if basetype == 'string':
              newfield = StringField(self.xpath, required=self.required, **kwargs)
              # copy original creation counter to newly created field
              # to preserve declaration order
              newfield.creation_counter = self.creation_counter
              return newfield
          else:
              raise Exception("basetype %s is not yet supported by SchemaField" % basetype)