XJ C - XSD с элементами с одинаковым именем - уже определенная ошибка - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь понять, что мне нужно учитывать, если я хочу сгенерировать java классов из набора xsd-schemas с использованием jaxb. Нерешенная проблема, с которой я столкнулся во время моих нынешних попыток, была вызвана конфликтом имен:

„[ОШИБКА]« попытки_данных »уже определена», элемент «данные попытки» может быть найден в двух xsd- files

Из-за этого я создал внешний файл настройки привязки - в соответствии с документацией, предложенной oracle («Настройка привязок JAXB»). думал, что это способ разрешить такое столкновение имен и что это должно решить его Но теперь я не уверен, что это правильно. Указанная ошибка все еще появлялась при следующих попытках синтаксического анализа.

xsd 1

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:annotation>
    <xs:documentation>This is just an attempt (1).</xs:documentation>
  </xs:annotation>
  <xs:element name="attempt_data">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

xsd 2

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0.0" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:annotation>
    <xs:documentation>This is just an attempt (2).</xs:documentation>
  </xs:annotation>
    <xs:element name="attempt_data">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="text" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

jaxb_ebf.xjb

<?xml version="1.0" encoding="UTF-8"?>
<jxb:bindings version="1.0" xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <jxb:bindings schemaLocation="file_01.xsd" node="/xs:schema">
        <jxb:bindings node=".//xs:element[@name='attemptdata']">
            <jxb:class name="attemptdatap"/>
        </jxb:bindings>
    </jxb:bindings> 
</jxb:bindings>

командная строка

xjc file directory  –b Binding-File

Я ценю любые советы - заранее спасибо

...