@schema.validate returns an array of errors. If "soft" is true - no exception is raised and your just want to return false if it isn't valid vs raising an exception for the !soft case. Seems like an odd way to write that though. 

Seems like it should be:

```
if soft
  @schema.valid?(@xml)
else
   ...
end