假设我有三个 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 的私有(private)引用
最好的方法是什么? 提前致谢
最佳答案
您像往常一样编写通用 XML 架构“com.xsd”。假设它包含一个复杂类型 TypeCommon ,其目标命名空间是“a:b”。然后,另一个使用“com.xsd”中内容的 XML 架构文件将使用 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>
关于java - jaxb xsd模式重用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36294734/