Otra opción sería usar JAXB para generar objetos Java y usar Hibernate para crear un esquema basado en la jerarquía de clases.
Dicho esto, depende de lo que intente hacer, y creo que tales soluciones probablemente serán frágiles y difíciles de mantener.