2009-05-15 3 views
2

Я разработал файл настройки привязки в jaxb 2.0 в JDK 1.6.0, и он отлично работал.Настройка привязки xjc не работает в jaxb 2.1.3. Он работает в jaxb 2.0

Теперь я использую JAXB 2.1.3 в JDK 1.6.0_13, и это дает мне ошибки:

ххх ошибка появляется в более чем одного свойства

который является то, что связывание файл должен быть обработан, переименовав их.

Что произошло между 2.0 и 2.1.3, что мне нужно знать и что мне нужно изменить. Я искал рядом и далеко и не могу понять. Большое спасибо за вашу помощь.

Я использую файл настройки привязки, потому что схема имеет пару имен свойств, которые будут иметь свойство «catch-all», потому что имя поля используется двумя разными частями схемы. Эти 2 поля называются выражение и утверждение

я получаю следующие ошибки синтаксического анализа схемы:

[ERROR] Element "assertion" shows up in more than one properties. 
line 649 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd 

[ERROR] The following location is relevant to the above error 
line 647 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd 

[ERROR] Element "expression" shows up in more than one properties. 
line 518 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd 

[ERROR] The following location is relevant to the above error 
line 516 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd 

[ERROR] Element "expression" shows up in more than one properties. 
line 522 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd 

[ERROR] The following location is relevant to the above error 
line 516 of file:/D:/jaxb/extract-xjbfix/090403-0_901-Packet-Schema.xsd 

Failed to parse a schema. 

мой XJC команды:

xjc -extension 090403-0_901-Packet-Schema.xsd -b binding.xjb 

мой файл xjb является:

<?xml version="1.0" encoding="UTF-8"?> 
<jxb:bindings version="2.0" 
      xmlns:jxb="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" 
      jxb:extensionBindingPrefixes="xjc" > 

<jxb:bindings schemaLocation="090403-0_901-Packet-Schema.xsd" node="/xs:schema"> 

<jxb:globalBindings> 
    <xjc:superClass name="com.pw.ietm.XMLExtract.IetmElement"/> 
</jxb:globalBindings> 

<jxb:schemaBindings> 
    <jxb:package name="com.pw.ietm.XMLExtract"/> 
</jxb:schemaBindings> 

<!-- Modify Expression because expression is used in two different parts of a schema --> 

<jxb:bindings node="//xs:complexType[@name='expression_comtype']/xs:choice/xs:sequence[position()=1]/xs:element[@name='expression'][position()=1]"> 
    <jxb:property name="expressionFirst"/> 
</jxb:bindings> 

<jxb:bindings node="//xs:complexType[@name='expression_comtype']/xs:choice/xs:sequence[position()=1]/xs:element[@name='expression'][position()=2]"> 
    <jxb:property name="expressionSecond"/> 
</jxb:bindings> 

<jxb:bindings node="//xs:complexType[@name='expression_comtype']/xs:choice/xs:sequence[position()=2]/xs:element[@name='expression']"> 
    <jxb:property name="expressionAlone"/> 
</jxb:bindings> 

<!-- Modify Loop-step because assertion is used in two different parts of a schema --> 

<jxb:bindings node="//xs:complexType[@name='loop-step_comtype']/xs:sequence/xs:element[@name='assertion'][position()=1]"> 
    <jxb:property name="assertionInitial"/> 
</jxb:bindings> 

<jxb:bindings node="//xs:complexType[@name='loop-step_comtype']/xs:sequence/xs:element[@name='assertion'][position()=2]"> 
    <jxb:property name="assertionChanging"/> 
</jxb:bindings> 

</jxb:bindings> <!-- schemaLocation="090403-0_901-Packet-Schema.xsd" node="/xs:schema" --> 

Схема очень большой, но здесь являются 2 утверждение и выражение comtype (что, где ошибки указывают):

<xs:complexType name="loop-step_comtype"> 
<xs:sequence> 
<xs:element name="assignment" type="assignment_comtype" minOccurs="0" maxOccurs="unbounded"/> 
<xs:element name="assertion" type="**assertion_comtype**" minOccurs="0"/> 
<xs:element name="expression" type="expression_comtype"/> 
<xs:element name="assertion" type="**assertion_comtype**" minOccurs="0"/> 
<xs:element name="step-seq" type="step-seq_comtype"/> 
</xs:sequence> 
<xs:attributeGroup ref="common_attrgroup"/> 
</xs:complexType> 


<xs:complexType name="expression_comtype"> 
<xs:choice> 
<xs:sequence> 
<xs:element name="expression" type="**expression_comtype**"/> 
<xs:group ref="binop_elemgroup"/> 
<xs:element name="expression" type="**expression_comtype**"/> 
</xs:sequence> 
<xs:sequence> 
<xs:group ref="unop_elemgroup"/> 
<xs:element name="expression" type="**expression_comtype**"/> 
</xs:sequence> 
<xs:element name="property-libref" type="property-libref_comtype"/> 
<xs:group ref="value_elemgroup"/> 
</xs:choice> 
<xs:attributeGroup ref="common_attrgroup"/> 
</xs:complexType> 
+0

мои части схемы не вышли в исходном посте. Здесь первый для экспрессии comtype: <хз: ComplexType имя = "петля-step_comtype"> <хз: элемент Name = "назначение" TYPE = "assignment_comtype" MinOccurs = "0" MaxOccurs = "неограниченным"/> beakerchi

+0

К сожалению, извините, это утверждение под контурным кодом – beakerchi

+0

Heres выражение comtype <хз: Имя ComplexType = "expression_comtype"> <хз: имя элемента = тип "выражение" = "expression_comtype" /> <хз: группа исх = "binop_elemgroup" /> <хз: элемент имя = тип "выражение" = "expression_comtype" /> <хз: группа исх = "unop_elemgroup" /> <хз: имя = тип элемента "выражение" =» выражение_comtype "/> beakerchi

ответ

0

Проблема на самом деле ошибка в ява версии после 1.6.0 Пожалуйста, см Issue 642 в https://jaxb.dev.java.net/issues/show_bug.cgi?id=642 Проблема была устранена, но с 8/31/09 нет контрольной даты, для которой будет выпущено исправление. Я продолжу использовать 1.6.0

+1

Как видно из 2.1.13; Я не пробовал более ранние версии. – JasonPlutext

+0

Во-вторых, Джейсон: использование более поздней версии устранило проблему. Благодаря! – Renaud

Смежные вопросы