2
我正在嘗試編寫一個XML架構來定義一些在java中使用jaxb的模型類。Xml架構接口
我想能夠在xsd中定義一個接口,但我不知道如何做到這一點。
例如,我的很多類都有一個叫做id的屬性,它是類型xs:ID。它們將具有名爲ref的屬性,該屬性是類型xs:IDREF,並且它們將具有稱爲extRef的屬性,這意味着存在引用但該元素未在給定的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>
因此,在上面的例子中這將是更好的,如果是exteranllyRefrencable的接口,以及如果carpart是一個接口。
這將允許CarLamp繼承燈而不是外部汽車零件。 BicycleLamp也可以實現外部Refrencable接口並擴展燈泡。
如果問題不清楚,請問我澄清。