gpt4 book ai didi

java - Xml 架构接口(interface)

转载 作者:行者123 更新时间:2023-11-29 09:20:36 25 4
gpt4 key购买 nike

我正在尝试编写一个 XML 模式来定义一些模型类,以便在 java 的 jaxb 中使用。

我希望能够在 xsd 中定义一个接口(interface),但我不知道该怎么做。

例如,我的许多类都有一个名为 id 的属性,其类型为 xs:ID。它们将有一个名为 ref 的属性,类型为 xs:IDREF,它们将有一个名为 extRef 的属性,这意味着存在一个引用,但该元素未在给定的 xml 文件中指定。

理想情况下,由于两个原因,这将是转换为 java 时的接口(interface)。

  1. 实现它的类不一定是连接的。
  2. 我想为其中一些对象指定一个不同的继承树。

例子:

<!-- 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>

所以在上面的例子中,如果 exteranllyRefrencable 是一个接口(interface),carpart 是一个接口(interface)会更好。

这将允许 CarLamp 继承自 lamp 而不是外部汽车部件。 BicycleLamp 还可以实现 externallyRefrencable 接口(interface)并扩展 lamp。

如果问题不清楚,请让我澄清。

最佳答案

IIRC,JAXB 不从 XSD 生成接口(interface)。

JAXB 还支持从 Java 类生成 XSD。我不确定它在这方面对接口(interface)做了什么,但也许您需要朝相反的方向进行 - 从 Java 开始并生成 XSD,但我不确定这是否会对您有所帮助。

关于java - Xml 架构接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6641661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com