【发布时间】:2014-04-15 08:10:25
【问题描述】:
我有两个相似的模式,对于某些元素,它们具有相同的结构,但在不同的命名空间下定义。在为第二个模式生成类时,有没有办法为第一个模式重用 JAXB 生成的类?我知道 jaxb 允许绑定自定义,但我无法确定同一组类是否可以同时与两个命名空间一起使用。更具体地说:
架构1
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns="ns1" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="ns1">
<xs:element name="Document" type="Document"/>
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="Root1" type="Root1Type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Root1Type">
<xs:sequence>
<xs:element name="Child" type="ChildType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ChildType">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/>
<xs:element name="MndtReqId" type="Max35Text"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="Max35Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
架构2
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema xmlns="ns2" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="ns2">
<xs:element name="Document" type="Document"/>
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="Root2" type="Root2Type"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Root2Type">
<xs:sequence>
<xs:element name="Child" type="ChildType"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ChildType">
<xs:sequence>
<xs:element maxOccurs="1" minOccurs="0" name="MndtId" type="Max35Text"/>
<xs:element name="MndtReqId" type="Max35Text"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="Max35Text">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="35"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
xjc 将为第一个模式生成:
ns1/ChildType.java
ns1/Document.java
ns1/ObjectFactory.java
ns1/Root1Type.java
ns1/package-info.java
第二个:
ns2/ChildType.java
ns2/Document.java
ns2/ObjectFactory.java
ns2/Root2Type.java
ns2/package-info.java
我想知道的是,在为第二个模式生成类时,是否可以重用为第一个模式生成的 ChildType。
谢谢
【问题讨论】: