2016-01-20 2 views
0

У меня есть два xsd-файла. Однако имя элемента одинаково в обоих файлах. Итак, чтобы преодолеть конфликты, я создал файл привязки.Имя одного и того же элемента в двух разных файлах xsd

Request.xsd

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:element name="XML"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="HEADER"/> 
     <xs:element ref="TOUR_OP"/> 
     <xs:element ref="CUSTOMERID"/> 
     <xs:element ref="DATEDEP"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="HEADER" type="xs:NCName"/> 
    <xs:element name="TOUR_OP" type="xs:NCName"/> 
    <xs:element name="CUSTOMERID" type="xs:integer"/> 
    <xs:element name="DATEDEP" type="xs:integer"/> 
</xs:schema> 

Response.xsd

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 
    <xs:element name="XML"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="HEADER"/> 
     <xs:element ref="RESULTS"/> 
     <xs:element ref="ENV"/> 
     <xs:element ref="APP"/> 
     <xs:element ref="VER"/> 
     <xs:element ref="STAMP"/> 
     <xs:element ref="CLIENT"/> 
     <xs:element ref="PIN"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="HEADER" type="xs:NCName"/> 
    <xs:element name="RESULTS"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="AEROPLANS"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="AEROPLANS"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element maxOccurs="unbounded" ref="AEROPLAN"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="AEROPLAN"> 
    <xs:complexType> 
     <xs:sequence> 
     <xs:element ref="MARKETCD"/> 
     <xs:element ref="AEROPOINT"/> 
     <xs:element ref="AERODOLLARS"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 
    <xs:element name="MARKETCD" type="xs:NCName"/> 
    <xs:element name="AEROPOINT" type="xs:integer"/> 
    <xs:element name="AERODOLLARS" type="xs:decimal"/> 
    <xs:element name="ENV" type="xs:NCName"/> 
    <xs:element name="APP" type="xs:NCName"/> 
    <xs:element name="VER" type="xs:NMTOKEN"/> 
    <xs:element name="STAMP" type="xs:string"/> 
    <xs:element name="CLIENT" type="xs:NCName"/> 
    <xs:element name="PIN" type="xs:integer"/> 
</xs:schema> 

Связывание файла (XJB)

<?xml version="1.0" encoding="UTF-8"?> 
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd" 
      version="2.1"> 

     <bindings schemaLocation="TTSAeroplanPointsSuccessResponse_v1.0.xsd"> 
      <bindings node=".//xsi:attribute[@name='XML']"> 
       <class name="XMLResponse"/> 
      </bindings> 
     </bindings> 
</bindings> 

Как йо u может видеть, что оба файла xsd содержат имя элемента = «XML», и файл привязки создается для преодоления конфликтов при создании классов моделей.

Я получаю сообщение об ошибке: оценка XPath результатов в пустом целевом узле

Пожалуйста, мне советы».//xsi:attribute[@name='XML"]», как я могу решить эту проблему.

ответ

1

Поскольку два элемента XML различны, рассмотрите использование разных имен - RequestXml, ResponseXml. Намного проще, поскольку вам не нужно использовать привязку. Держите его простым в действии!

+0

Как насчет Голова. Должен ли я изменить его на ResponseHeader и RequestHeader – user2985842

+0

, вы также можете решить это с помощью пространства имен XML. –

+0

Как? Можете привести пример – user2985842

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