Генерация классов JAXB — проблема с дублированием элементов simpleType в XSD-файлах

#java #xsd #jaxb

Вопрос:

Я пытаюсь создать классы JAXB из файла XSD, предоставленного внешним поставщиком: http://crd.gov.pl/wzor/2021/03/26/10548/schemat.xsd

К сожалению, файл содержит множество зависимостей, которые вызывают такие ошибки, как:

[ОШИБКА] Класс / интерфейс с тем же именем «[Имя образца]» уже используется. Используйте настройку класса для разрешения этого конфликта.

Я разобрался с ошибками узлов сложного типа, используя такие привязки, как:

 <jxb:bindings schemaLocation="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2020/03/11/eD/DefinicjeTypy/StrukturyDanych_v6-0E.xsd">
   <jxb:bindings node="//xsd:complexType[@name='SampleName']">
      <jxb:class name="SampleNamev2"/>
   </jxb:bindings>
</jxb:bindings>
 

но я не могу решить проблему с узлом простого типа (перечисление) TKodKraju:

 <xsd:simpleType name="TKodKraju">
    <xsd:restriction base="xsd:normalizedString">
        <xsd:enumeration value="XX">
            <xsd:annotation>
                <xsd:documentation>XX_DESC</xsd:documentation>
            </xsd:annotation>
        </xsd:enumeration>
        <xsd:enumeration value="YY">
            <xsd:annotation>
                <xsd:documentation>YY_DESC</xsd:documentation>
            </xsd:annotation>
        </xsd:enumeration>
        ...
 

Наконец, у меня была одна ошибка, с которой нужно было справиться:

 parsing a schema...
compiling a schema...
[ERROR] A class/interface with the same name "schema.CIT830v10E.TKodKraju" is already in use. Use a class customization to resolve this conflict.
  line 6 of http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2020/03/11/eD/DefinicjeTypy/KodyKrajow_v6-0E.xsd

[ERROR] (Relevant to above error) another "TKodKraju" is generated from here.
  line 6 of http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2020/07/06/eD/DefinicjeTypy/KodyKrajow_v7-0E.xsd

Failed to produce code.
 

Я искал и пробовал различные решения, например:

     <jxb:bindings schemaLocation="http://crd.gov.pl/xml/schematy/dziedzinowe/mf/2020/03/11/eD/DefinicjeTypy/KodyKrajow_v6-0E.xsd">
        <jxb:bindings node="//xsd:element[@name='TKodKraju']">
            <jxb:factoryMethod name="TKodKrajuv6"/>
        </jxb:bindings>
    </jxb:bindings>
 

но ни один из них не прошел через процесс синтаксического анализа. Большинство из них заканчивались словами:

анализ схемы… [ОШИБКА] Оценка XPath «//xsd:элемент[@name=’TKodKraju’]» приводит к пустому целевому узлу … Не удалось проанализировать схему.

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