1

我需要创建一个描述 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> { ... }

....

(哪里XTimeLocation是在别处定义的自定义类)

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

谢谢!

4

1 回答 1

6

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>

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

于 2010-04-16T07:52:36.350 回答