java
  • xml
  • xpath
  • xsd
  • jaxb
  • 2016-05-15 1 views 2 likes 
    2

    Я пытаюсь создать класс Java с wsdl, но я получаю сообщение об ошибке:JAXB-bindingx.xml «приводит к слишком много целевых узлов»

    XPath evaluation of "//xs:element[@name='RZECZ_REJESTRACJA']\xs:complexType/xs:choice\xs:sequencexs:element[@ref='NUMER_OZNAKOWANIA']" results in too many (2) target nodes

    Мой файл XSD - kcik_rejestracja_przedmiotu.xsd:

    <xs:element name="RZECZ_REJESTRACJA"> 
    <xs:complexType> 
        <xs:choice> 
        <xs:sequence> 
         <xs:element ref="NUMER_FABRYCZNY"/> 
         <xs:element minOccurs="0" ref="NUMER_OZNAKOWANIA"/> 
         <xs:element ref="MARKA_RZECZY"/> 
         <xs:element minOccurs="0" ref="TYP_RZECZY"/> 
         <xs:element ref="RODZAJ_RZECZY"/> 
        </xs:sequence> 
        <xs:sequence> 
         <xs:element ref="NUMER_OZNAKOWANIA"/> 
         <xs:element ref="MARKA_RZECZY"/> 
         <xs:element minOccurs="0" ref="TYP_RZECZY"/> 
         <xs:element ref="RODZAJ_RZECZY"/> 
        </xs:sequence> 
        </xs:choice> 
    </xs:complexType> 
    

    И мой jaxb-bindings.xml, который не работал .:

    <bindings schemaLocation="wsdl/SOAComponents/ApplicationObjectLibrary/KCIK/Service/schemas/kcik_rejestracja_przedmiotu.xsd"> 
        <bindings node="//xs:element[@name='RZECZ_REJESTRACJA']/xs:complexType/xs:choice/xs:sequence"> 
         <bindings node=".//xs:element[@ref='NUMER_OZNAKOWANIA']"> 
          <property name="NumerOznakowaniaAttr"/> 
         </bindings> 
        </bindings> 
    

    +0

    ли сообщение об ошибке? – Lee

    +0

    Да. XPath-оценка "// xs: element [@ name = 'RZECZ_REJESTRACJA'] \ xs: complexType/xs: choice \ xs: sequencexs: element [@ ref = 'NUMER_OZNAKOWANIA']" приводит к слишком большому (2) целевым узлам – Sebastian

    ответ

    -1

    Ваш XSD должен быть переписан как следовать

    <xs:element name="RZECZ_REJESTRACJA"> 
    <xs:complexType> 
        <xs:choice> 
        <xs:sequence> 
         <xs:element ref="NUMER_FABRYCZNY"/> 
         <xs:sequence minOccurs="0"> 
         <xs:element ref="NUMER_OZNAKOWANIA"/> 
         </xs:sequence/ 
         <xs:element ref="MARKA_RZECZY"/> 
         <xs:sequence minOccurs="0"> 
         <xs:element ref="TYP_RZECZY"/> 
         </xs:sequence> 
         <xs:element ref="RODZAJ_RZECZY"/> 
        </xs:sequence>  
        </xs:choice> 
    </xs:complexType> 
    
    +0

    Я думаю, что я не могу изменить модель, потому что она генерируется из внешней системы. – Sebastian

    0

    Вы можете использовать этот файл связывания

    <bindings node="//xs:element[@name='RZECZ_REJESTRACJA']/xs:complexType/xs:choice/xs:sequence[1]"> 
         <bindings node=".//xs:element[@ref='NUMER_OZNAKOWANIA']"> 
          <property name="NumerOznakowaniaAttr"/> 
         </bindings> 
    </bindings> 
    
    +1

    Я решил эту проблему. ' \t ' – Sebastian

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

    • Нет связанных вопросов^_^