The main source file that has the problems noted above follows: package src; import *; import
To know about the subsequent errors, we need to fix the previous error and validate the file again and again till no exception is thrown.
Now to list all errors in one go, we need to populate list of errors by overriding error handling behaviour of the validate().
As this related question describes, there does not appear to be a canonical way to validate XML files against an XSD then subsequently transform them using an XSL template with file paths determined from a catalog resolver.
The XSL templates can be XSLT 1.0 or XSLT 2.0, the latter requiring Saxon9HE.
The third event is related to the extra phone-number element.
The first two events are related to the text value of the name element being too long.
I believe this method suffers because you try to validate everything before deciding whether you're going to use it.
All I can do is review the code as it is based on my knowledge in Java.
I think you'll have to ask somewhere else for that; I can't help you refactor out huge parts of your program just like that.