Как пройти атрибуты ссылки XML-схемы с помощью JDOM

Я пытаюсь сделать что-то вроде обхода в глубину dom, созданного JDOM, на основе следующего XSD. Проблема в том, что дерево, построенное JDOM, не учитывает ссылки ref. Другими словами, элемент с name='xs:element' и ref='BaseData' имеет 0 дочерних элементов в соответствии с деревом JDOM, потому что, рассматривая его как еще один файл XML, он действительно не имеет дочерних элементов.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="XDEX">
        <xs:annotation>
            <xs:documentation>Version 20 of 2013-08-21</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="BaseData"/> <-- getChildren returns 0 Elements!!
                <xs:element ref="Shipment"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="BaseData">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="Mandator"/>
                <xs:element ref="MandatorVATNumber"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
    <xs:element name="Mandator" type="Char3">
        <xs:annotation>
            <xs:documentation>number identifying the current mandator</xs:documentation>
        </xs:annotation>
    </xs:element>

... and so on

Мне действительно нужно пройти по схеме таким образом, чтобы следовать ссылкам, чтобы, например, с помощью рекурсивного алгоритма (для глубины сначала) "Доверитель" посещался непосредственно после "Базовых данных", а не "Отгрузка" , как сейчас. Кто-нибудь знает, как это можно сделать с помощью JDOM или, возможно, другой библиотеки?

Спасибо заранее.


person BigErn77    schedule 14.03.2014    source источник
comment
Раньше существовала библиотека XSOM для разбора XML-схем. Вы также можете проверить эти ссылки. stackoverflow.com/questions/3996857 / и stackoverflow.com/questions/1725911/   -  person helderdarocha    schedule 14.03.2014
comment
Используя синтаксический анализатор SAX, вы можете прочитать и перестроить XSchema, используя только вложенные элементы и типы (стиль матрешки). Вы также можете сделать это с помощью JDOM, обнаружив элементы верхнего уровня и переместив их в место, где находятся ссылки, сохранив и скопировав соответствующие атрибуты и удалив атрибуты, которые недопустимы при вложении.   -  person helderdarocha    schedule 14.03.2014