Java Xml模式接口
我正试图编写一个XML模式,以定义一些要在java中的jaxb中使用的模型类 我希望能够在xsd中定义接口,但我不知道如何做到这一点 例如,我的很多类都有一个名为id的属性,该属性的类型为xs:id。它们有一个名为ref的属性,该属性的类型为xs:IDREF,它们有一个名为extRef的属性,这意味着有一个reference,但在给定的xml文件中没有指定元素 理想情况下,当转换为java时,这将是一个接口,原因有二Java Xml模式接口,java,inheritance,xsd,Java,Inheritance,Xsd,我正试图编写一个XML模式,以定义一些要在java中的jaxb中使用的模型类 我希望能够在xsd中定义接口,但我不知道如何做到这一点 例如,我的很多类都有一个名为id的属性,该属性的类型为xs:id。它们有一个名为ref的属性,该属性的类型为xs:IDREF,它们有一个名为extRef的属性,这意味着有一个reference,但在给定的xml文件中没有指定元素 理想情况下,当转换为java时,这将是一个接口,原因有二 实现这一点的类不一定是连接的 我想为其中一些对象指定一个不同的继承树 例如:
<!-- Utility type to be externally referenceable this is too keep all the
externally refrencable attributes in check -->
<xs:complexType name="ExternallyReferenceable" abstract="true">
<xs:attribute name="extRef" type="externalReference" />
<xs:attribute name="id" type="xs:ID" />
<xs:attribute name="ref" type="xs:IDREF" />
</xs:complexType>
<xs:complexType name="ExternalCarPart">
<xs:extension base ="ExternallyReferenceable" />
</xs:complexType>
<xs:complexType name="CarPart">
<xs:extension base ="ExternalCarPart">
<xs:sequence>
<xs:element type="xs:string" name="partName" />
</xs:sequence>
</xs:extension>
</xs:complexType>
<xs:complexType name="CarLamp">
<xs:extension base ="ExternalCarPart">
<xs:sequence>
<xs:element type="xs:string" name="glassPurity" />
</xs:sequence>
</xs:extension>
</xs:complexType>
因此,在上面的示例中,如果ExternallyRefracable是一个接口,而carpart是一个接口,则会更好
这将允许CarLamp从车灯继承,而不是从外部汽车部件继承。BicycleLamp还可以实现外部可折射接口并扩展lamp
如果问题不清楚,请让我澄清。IIRC,JAXB不会从XSD生成接口
JAXB还支持从Java类生成XSD。我不确定它在这方面对接口做了什么,但也许您需要朝相反的方向去做——从Java开始并生成XSD,尽管我不确定这是否会对您有所帮助 IIRC,JAXB不会从XSD生成接口 JAXB还支持从Java类生成XSD。我不确定它在这方面对接口做了什么,但也许您需要朝相反的方向去做——从Java开始并生成XSD,尽管我不确定这是否会对您有所帮助