Друг вариант е да използвате JAXB за генериране на Java обекти и да използвате Hibernate за създаване на схема въз основа на йерархията на класовете.
Като се има предвид това, зависи какво се опитвате да направите и мисля, че подобни решения вероятно ще бъдат крехки и трудни за поддръжка.