典型的2个XSD文件中具有相同名称的complexType?

时间:2015-04-15 21:45:59

标签: xsd jaxb

我是JAXB的新手并处理XSD。我正在使用Maven JAXB2插件来编组来自它们的类。我从我需要使用的Web服务提供程序中获取它们,但我不确定它们是否在文档中出错或者我是否可能没有正确处理重复。

所以我有两个XSD文件a.xsd和b.xsd,它们都位于同一个目录中。

在a.xsd中我得到了贬义:

<xs:complexType name="AttributeType">
    <xs:sequence>
        <xs:element ref="AttributeValue" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="AttributeName" type="xs:string" use="required" />
    <xs:attribute name="AttributeNamespace" type="xs:string"
        use="required" />
</xs:complexType>

在b.xsd中我有:

<xs:complexType name="AttributeType">
    <xs:sequence>
        <xs:element ref="AttributeValue" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="AttributeName" type="xs:string" use="required" />
    <xs:attribute name="AttributeNamespace" type="xs:string"
        use="required" />
</xs:complexType>

我在Maven中遇到的错误是

A class/interface with the same name   "com.mycompany.voice.gcs.correspondenceservice.v1.AttributeType" is already in use. Use a class customization to resolve this conflict.

它们看起来与我相同,将它们复制是没有意义的。但正如我所说,我对这些东西不熟悉,所以我想确保我不会错过任何东西。

感谢。 :)

2 个答案:

答案 0 :(得分:0)

只要这两个模式具有不同的命名空间,就可以了。查找根架构元素的targetNamespace attribite。

如果缺少目标命名空间或目标命名空间相同,则可能存在问题。

这看起来像是&#34;复制粘贴&#34;架构设计,不是首选的模块化设计,但如果不看模式就很难判断。

&#34;拷贝粘贴&#34;设计不是非典型的,但也不是一种好的做法。

答案 1 :(得分:0)

服务提供商向我提供了错误的文件,其中包含重复的复杂类型。结果重复失败了。