У меня есть DTD схемы в TradeMessage.dtd
файле (это минимальный рабочий пример)JAXB ОТД конфликт поколения схема
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT BpsaMessage (BuyMessage | SellMessage)>
<!ATTLIST BpsaMessage
unique_id CDATA #REQUIRED
>
<!ELEMENT BuyMessage (account)>
<!ATTLIST BuyMessage
db_apply CDATA #REQUIRED
>
<!ELEMENT account EMPTY>
<!ATTLIST account
client_nbr CDATA #REQUIRED
>
<!ELEMENT SellMessage (account)>
<!ATTLIST SellMessage
db_apply CDATA #REQUIRED
>
<!ELEMENT account EMPTY>
<!ATTLIST account
action CDATA #REQUIRED
>
И пытаются использовать эту команду, чтобы создать набор классов Java, ибо она
xjc -dtd -d result_folder -p org.company.model TradeMessages.dtd
К сожалению, у меня есть ошибка
parsing a schema...
[ERROR] Element "account" was already declared
line 18 of file:/C:/Dev/Programs/Java/jdk1.8.0_60/bin/TradeMessage.dtd
Failed to parse a schema.
Вопросы:
Как можно переименовать
account
элемент внутриSellMessage
до, например,sellAccount
сxjc
обязательным файлом для разрешения конфликта имен?Как настроить связывание поставить
BuyMessage
класс вorg.company.model.buy
иSellMessage
класса вorg.company.model.sell
отдельных пакетов?Можно ли задать привязку пропустить любые другие объявления DTD схемы в
TradeMessage.dtd
кромеBpsaMessage
,SellMessage
иBuyMessage
?
Вы не можете иметь дубликаты объявлений элементов в DTD. Вы можете добавить оба атрибута как #IMPLIED к одному определению, если вы готовы мириться с избыточными полями в вашем объекте, или вместо этого вы можете использовать xsd. – teppic
@teppic на самом деле это не мой DTD. Это DTD из автономной системы, отправляющей нам XML-сообщения. Я не могу изменить или исправить это. Но мне нужно сгенерировать набор Java-классов для JAXB XML unmarshaller. –