Java 对象的 XML 模式定义 (XSD) 中的继承

bgu*_*uiz 0 java xml inheritance xsd schema-design

我需要创建一个描述 Java 对象的 XML 模式定义 (XSD)。

我想知道当有问题的对象从具有类型参数的公共基类继承时如何执行此操作。

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> { ... }

....
Run Code Online (Sandbox Code Playgroud)

(其中XTimeLocation是在别处定义的自定义类)

我将如何构建一个 XSD,以便我可以拥有代表每个子类的 XML 节点Rule<T>- 没有每个子类的 XSD 重复它们的公共内容?

谢谢!

lex*_*ore 5

Conisder JAXB for XML Schema -> Java 编译。

XML Schema 为建模继承提供了一些可能性:

<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>
Run Code Online (Sandbox Code Playgroud)

但是,我认为您无法完全实现您发布的 Java 代码。不过,您可以稍微接近继承插件