Файл привязки Jaxb игнорируется - PullRequest
0 голосов
/ 21 октября 2011

У меня возникли проблемы с построением привязок JAXB для набора схем, и это сводит меня с ума. Вот рассматриваемая схема (это только одна из майских схем в данной конкретной сборке):

<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xml="http://www.w3.org/XML/1998/namespace" targetNamespace="http://www.w3.org/XML/1998/namespace">
<attribute name="lang" type="language">
    <annotation>
        <documentation>In due course, we should install the relevant ISO 2- and 3-letter
            codes as the enumerated possible values . . .</documentation>
    </annotation>
</attribute>
<attribute name="space" default="preserve">
    <simpleType>
        <restriction base="NCName">
            <enumeration value="default"/>
            <enumeration value="preserve"/>
        </restriction>
    </simpleType>
</attribute>
<attributeGroup name="specialAttrs">
    <attribute ref="xml:lang"/>
    <attribute ref="xml:space"/>
</attributeGroup>

xjc утверждает, что атрибуты, объявленные выше, уже объявлены в другом месте:

parsing a schema...
[ERROR] 'lang' is already defined
  line 26 of file:../../gml/3.1.1/smil/xml-mod.xsd

[ERROR] (related to above error) the first definition appears here
  line 88 of http://www.w3.org/2001/03/xml.xsd

[ERROR] 'space' is already defined
  line 34 of file:../../gml/3.1.1/smil/xml-mod.xsd

[ERROR] (related to above error) the first definition appears here
  line 95 of http://www.w3.org/2001/03/xml.xsd

[ERROR] 'specialAttrs' is already defined
  line 39 of file:../../gml/3.1.1/smil/xml-mod.xsd

[ERROR] (related to above error) the first definition appears here
  line 111 of http://www.w3.org/2001/03/xml.xsd

Failed to parse a schema.

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

<jaxb:bindings version="1.0" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" jaxb:extensionBindingPrefixes="xjc">

<jaxb:bindings schemaLocation="../../gml/3.1.1/smil/xml-mod.xsd" node="/xs:schema">
    <jaxb:bindings node="//xs:attribute[@name='lang']">
        <jaxb:property name="langAttribute"/>
    </jaxb:bindings>
    <jaxb:bindings node="//xs:attribute[@name='space']">
        <jaxb:property name="spaceAttribute"/>
    </jaxb:bindings>
    <jaxb:bindings node="//xs:attributeGroup[@name='specialAttrs']">
        <jaxb:property name="specialAttrsAttribute"/>
    </jaxb:bindings>
</jaxb:bindings>

И все же проблема сохраняется. Сообщение об ошибке с файлом привязок или без него одинаково. Я знаю, что файл используется, потому что, если я испорчу xpath для селектора узла, я получу сообщение об ошибке. Как будто xjc знает, что файл привязок есть, но игнорирует его.

Вот командная строка, которая не может создать привязки:

C:\tools\jaxb-ri-20110512\bin\xjc -episode ..\..\..\common.ogc -d ..\..\..\src -p com.ogc.bindings -b ..\..\..\bindings.xsd -catalog ..\..\..\ogc.cat -extension  sosAll.xsd

Я пробовал это с jdk6 native jaxb (2.0) и jaxb 2.2.4 (я установил jaxb-api.jar в одобренном каталоге)

Ответы [ 3 ]

4 голосов
/ 01 января 2014

XJC (в комплекте с JDK), игнорирует файл привязки, если путь к файлу привязки или XSD / WSDL слишком длинный.

Проблема обнаружена и подтверждена в Oracle 64 bitJDK 1.6.0.45 в Windows 7 Ultimate и в Linux XJC (в комплекте с JDK) игнорирует файл привязки, если путь к файлу привязки слишком длинный.

У меня не было времени, чтобы детально изучить проблему;Я решил свою проблему, просто сократив путь проверки SVN.Это была самая странная проблема - я не мог воспроизвести проблему на своем ноутбуке с Windows 8 и в Linux, но на рабочей станции Windows 7 сборка продолжала давать сбой.Я обнаружил эту проблему, подтвердив, что, кроме пути, нет никакой разницы между LAPTOP в Windows 8, где работает сборка, и Windows 7 Ultimate, где путь немного длинный (6 символов -> /trunk).

Проблема была решена без изменения кода, конфигурации, XML-схемы или файла привязки.Размещать здесь, чтобы другим, кто может столкнуться с этим, было немного легче, чем мне.

0 голосов
/ 02 марта 2012

Когда вы пытаетесь скомпилировать схемы OGC, вы можете найти этот проект полезным.Содержит скомпилированные схемы SOS.

0 голосов
/ 21 октября 2011

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

...