Кажется, ваше мышление немного запутано. Почему определение Журналов должно происходить до определения Журнала? Эти определения не содержат друг друга - они определяют элементы, которые содержат друг друга, но определения являются отдельными. Рассмотрим некоторый соответствующий код Java:
class Journal {
String journalName;
List<Volume> volumes;
}
class Journals {
List<Journal> journals;
}
Вы бы не ожидали увидеть их в каком-то определенном порядке, не говоря уже о том, чтобы определение «Журнал» было внутри этого определения для «Журналов», не так ли?
Итак, если вы хотите извлечь иерархию из схемы, я боюсь, что вам придется прочитать весь документ и отметить, где элемент определен как содержащий какой-то другой элемент. Вы можете создать описание иерархии по мере продвижения.