假设我有三个xsd架构:CommonSchema.xsd,A.xsd,B.xsd。 在CommonSchema.xsd中,我有一些要在A.xsd和B.xsd中重用的元素。 因为我想重用通过org.jvnet.jaxb2.maven2插件生成的代码。 我想在生成的java代码中得到类似的东西:
A extends CommonSchema {...}
B extends CommonSchema {...}
从A.java和B.java到CommonSchema.java的私人引用
这样做的最佳方法是什么? 提前致谢
答案 0 :(得分:1)
像往常一样编写通用的XML Schema“com.xsd”。假设它包含复杂类型TypeCommon,其目标命名空间为“a:b”。然后,使用来自“com.xsd”的东西的另一个XML Schema文件将使用s.th.像
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ns="a:b"
targetNamespace="x:y">
<xs:import schemaLocation="com.xsd" namespace="a:b"/>
<xs:complexType name="TypeX2">
<xs:sequence>
<xs:element name="name" type="ns:TypeCommon"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
类层次结构来自复杂的类型扩展,例如使用
<xs:complexType name="TypeA">
<xs:complexContent>
<xs:extension base="ns:TypeCommon">
<xs:sequence>
<xs:element name="foo" type="xs:string"/>
</xs:sequence>
<xs:attribute name="bar" type="xs:int" fixed="1"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>