Ett annat alternativ skulle vara att använda JAXB för att generera Java-objekt och använda Hibernate för att skapa ett schema baserat på klasshierarkin.
Som sagt, det beror på vad du försöker göra, och jag tror att sådana lösningar förmodligen kommer att bli spröda och svåra att underhålla.