Une autre option serait d'utiliser JAXB pour générer des objets Java et d'utiliser Hibernate pour créer un schéma basé sur la hiérarchie des classes.
Cela étant dit, cela dépend de ce que vous essayez de faire, et je pense que de telles solutions seront probablement fragiles et difficiles à entretenir.