我有两个顶级课程,它们按组成共享第三个课程。例子:
@XmlRootElement
@XmlType(namespace = "http://example.com/foo")
public class Foo {
public Shared shared;
}
@XmlRootElement
@XmlType(namespace = "http://example.com/bar")
public class Bar {
public Shared shared;
}
public class Shared {
public String string;
}
这些类中的每一个都分配给不同编译单元(模块)中的不同包。现在,当我在每个顶级类上使用 schemagen 时,我希望 Shared 类具有与顶级类相同的名称空间。所以 Foo 的输出应该是这样的:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo" type="Foo"/>
<xs:complexType name="Foo">
<xs:sequence>
<xs:element name="shared" type="Shared" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Shared">
<xs:sequence>
<xs:element name="string" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
但是,它不是这样工作的。相反,Shared 类具有默认命名空间,因此我得到两个模式文件,一个用于 Foo 的命名空间,一个用于 Shared 的命名空间。
有没有办法解决这个问题而没有明显的解决方案来复制 Shared 类,从而不再共享它?