anchor.diff:  ----
   <batch:job id="studentsJob" restartable="true">
   	<batch:step id="step1">
  -		<batch:tasklet transaction-manager="transactionManager">                
  -			
  +		<batch:tasklet transaction-manager="transactionManager">  
   			<batch:chunk reader="xmlItemReader" writer="databaseItemWriter"
  -				processor="itemProcessor" commit-interval="1" *skip-limit="2">
  +				processor="itemProcessor" commit-interval="1" skip-limit="2">
   				 <batch:streams>
   					<batch:stream ref="errorItemWriter"/>
   					<batch:stream ref="successItemWriter"/>
  
positive.code: 	</batch:listeners>
  </batch:job>
  ----
  The section marked in bold is added to handle the skip logic. There is a skip-limit attribute (value as number) which is checked on every skippable exception, and when the number is reached, the step fails.
  +
  NOTE: The batch:streams, batch:listeners and batch:skippable-exception-classes configuration elements are all related to the way that erroneous input records are handled.
  +
  
negative.code: 					<batch:listener ref="skipListener" />
  					<batch:listener ref="writeListener" />
  				</batch:listeners>
  			</batch:chunk>			
  		</batch:tasklet>
  	</batch:step>
  	<batch:listeners>
  