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

Мне нужно создать определение схемы 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 Ответ

4 голосов
/ 16 апреля 2010

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, который вы публикуете. Тем не менее, вы можете немного приблизиться к плагину наследования .

...