Файл внешней привязки XJC всегда дает сбой

(см. обновление ниже о происхождении этой проблемы)

Возникли проблемы при попытке запустить xjc с любым типом внешнего файла привязки. Вот копия файла привязки, который я пытаюсь использовать:

<jxb:bindings 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
    xmlns:pd="http://chubb.com/cpi/polsvc/xmlobj"
    jxb:extensionBindingPrefixes="xjc"
    version="2.1">

    <jxb:bindings schemaLocation="your-schema.xsd">
        <jxb:bindings node="//xs:complexType[@name='AddBankVaultRplyType']">
    </jxb:bindings>
</jxb:bindings>

I know it doesn't do anything, but just trying to get a simple example to run. I'm running the following command:

xjc -extension -b src/main/resources/bindings/cXML.xjb -dtd -d tmp src/main/resources/dtds/cXML.dtd -verbose

И получаю следующие ошибки:

parsing a schema...
[ERROR] Unsupported binding namespace "http://java.sun.com/xml/ns/jaxb". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?
  line 7 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb

[ERROR] cvc-elt.1: Cannot find the declaration of element 'jxb:bindings'.
  line 7 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb

[ERROR] Unsupported binding namespace "http://java.sun.com/xml/ns/jaxb". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?
  line 8 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb

[ERROR] Unsupported binding namespace "http://java.sun.com/xml/ns/jaxb". Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc"?
  line 9 of file:/Users/nick/Development/wuxi/services/punchout/src/main/resources/bindings/cXML.xjb

Failed to parse a schema.

Независимо от того, что я помещал в файл привязки для элементов jaxb, он всегда файлы с сообщением об ошибке типа Perhaps you meant "http://java.sun.com/xml/ns/jaxb/xjc".

Я что-то упустил здесь? Кажется, что это должно быть довольно прямолинейно, и я не знаю, почему это вызывает у меня проблемы.

Версия XJC:

xjc -version
xjc 2.2.8-b130911.1802

Спасибо!

ОБНОВЛЕНИЕ

Первоначальная цель файла xjb — исправить некоторые проблемы с DTD. В частности, конфликты имен, такие как:

[ERROR] Property "Name" is already defined. Use &lt;jaxb:property> to resolve this conflict.

person nick.stuart    schedule 26.05.2015    source источник


Ответы (1)


Это потому, что вы компилируете DTD. Это совсем другой тип животных, обычные привязки не работают с DTD.

Вот пример проекта, который компилирует DTD. Привязка выглядит следующим образом:

<?xml version="1.0"?>
<xml-java-binding-schema>
    <options package="org.jvnet.hyperjaxb3.hibernate.mapping"/>
    <element name="hibernate-mapping" type="class"/>
    <element name="class" type="class" class="Clazz">
        <attribute name="subselect" property="SubselectAttribute"/>
    </element>
    <element name="typedef" type="class">
        <attribute name="class" property="Clazz"/>
    </element>
    <element name="import" type="class">
        <attribute name="class" property="Clazz"/>
    </element>
    <element name="composite-id" type="class">
        <attribute name="class" property="Clazz"/>
    </element>
    ...
</xml-java-binding-schema>
person lexicore    schedule 27.05.2015
comment
Спасибо за информацию. Из того, что я могу найти, между: grepcode.com/file/repo1.maven.org/maven2/com.sun.xml.bind/ и xml.coverpages.org/jaxb-docs-ea200106.pdf Это не похоже мою проблему можно решить с помощью dtd, который я использую: [ОШИБКА] Имя свойства уже определено. Используйте jaxb:property› для разрешения этого конфликта. Кажется, что ни один из конкретных материалов dtd не позволяет переименовывать свойства. Любые идеи по этому поводу или я что-то упустил. - person nick.stuart; 28.05.2015