Скомпилируйте несколько XSD, содержащих повторяющиеся определения одного и того же элемента, с помощью JAXB.

Вопрос: Как заставить xjc/Jaxb генерировать правильные классы java для нескольких схем, содержащих повторяющиеся определения элементов в одном и том же пространстве имен?

Информация: У меня есть три схемы .xsd: A, B и C. Все они имеют одно и то же целевое пространство имен. Это все 3 схемы, которые были даны мне, и мне никоим образом не разрешено их изменять.

У A есть некоторые элементы, которые также встречаются в B или C (но у A также есть много самодекларируемых элементов) Пример: Это тот же «код» для A и C:

<xs:simpleType name="y_ym_ymdDatoType">
    <xs:union memberTypes="arcgYearType arcgYearMonthType arcDateType"/>
</xs:simpleType>
<xs:simpleType name="arcgYearType">
    <xs:restriction base="xs:gYear">
        <xs:minInclusive value="1700"/>
        <xs:maxInclusive value="2100"/>
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="arcgYearMonthType">
    <xs:restriction base="xs:gYearMonth">
        <xs:minInclusive value="1700-01"/>
        <xs:maxInclusive value="2100-12"/>
    </xs:restriction>
</xs:simpleType>
<xs:simpleType name="arcDateType">
    <xs:restriction base="xs:date">
        <xs:minInclusive value="1700-01-01"/>
        <xs:maxInclusive value="2100-12-31"/>
    </xs:restriction>
</xs:simpleType>

При использовании xjc для их компиляции в классы java я получаю следующее исключение:

[ERROR] 'y_ym_ymdDatoType' is already defined
 line 297 of file:../c.xsd

[ERROR] (related to above error) the first definition appears here
 line 309 of file:../a.xsd

и то же самое происходит с другими элементами: arcgYearType, arcgYearMonthType и arcDateType.

Я читал о файле привязки, который, возможно, мог бы решить эту проблему, но я не уверен, как это сделать, поэтому я предпочитаю примеры.

8
задан Sofus Albertsen 13 March 2012 в 12:30
поделиться