Наследование в определении XML-схемы (XSD) для объектов Java

Мне нужно создать определение схемы XML (XSD), которое описывает объекты Java.

Мне было интересно, как это сделать, когда рассматриваемые объекты наследуются от общего базового класса с параметром типа.

public abstract class Rule<T> { ... }

public abstract class TimeRule extends Rule<XTime> { ... }

public abstract class LocationRule extends Rule<Location> { ... }

public abstract class IntRule extends Rule<Integer> { ... }

....

(где XTime а также Location пользовательские классы определены в другом месте)

Как бы я пошел о создании XSD, чтобы у меня могли быть XML-узлы, представляющие каждый из подклассов Rule<T> - без XSD для каждого из них повторяется их общее содержание?

Спасибо!

1 ответ

Решение

Conisder JAXB для XML-схемы -> компиляция Java.

XML-схема дает некоторые возможности для моделирования наследования:

<xs:complexType name="baseType">
    <xs:sequence>
        <xs:element name="a" type="xs:string"/>
        <xs:element name="b" type="xs:long"/>
    </xs:sequence>
</xs:complexType>
<xs:complexType name="extendedType">
    <xs:complexContent>
        <xs:extension base="baseType">
            <xs:sequence>
                <xs:element name="c" type="xs:dateTime"/>
                <xs:element name="d" type="xs:base64Binary"/>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

Однако я не думаю, что вы можете достичь именно того кода Java, который вы публикуете. Тем не менее, вы можете немного приблизиться к плагину наследования.

Другие вопросы по тегам