def _validate(self, validator, data, key, position=None, includes=None):
errors = []<EOL>if position:<EOL><INDENT>position = '<STR_LIT>' % (position, key)<EOL><DEDENT>else:<EOL><INDENT>position = key<EOL><DEDENT>try:  <EOL><INDENT>data_item = util.get_value(data, key)<EOL><DEDENT>except KeyError:  <EOL><INDENT>if validator.is_optional:  <EOL><INDENT>return errors<EOL><DEDENT>errors.append('<STR_LIT>' % position)<EOL>return errors<EOL><DEDENT>return self._validate_item(validator, data_item, position, includes)<EOL>
Run through a schema and a data structure,
validating along the way.

Ignores fields that are in the data structure, but not in the schema.

Returns an array of errors.