2016-01-20 90 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> 

作为哟你可以看到,我的两个xsd文件都包含元素名称=“XML”,并创建绑定文件来克服生成模型类时的冲突。

我得到一个错误:“.//xsi:attribute[@name='XML']”导致空目标节点

请咨询我的XPath计算,我怎么能解决这个问题。

回答

1

由于两个XML元素是不同的,因此可以考虑使用不同的名称 - RequestXml,ResponseXml。更简单,因为你不需要使用绑定。保持简单主义的行动!

+0

怎么样的头。我是否应该将其更改为ResponseHeader和RequestHeader – user2985842

+0

,您也可以使用XML名称空间解决此问题。 –

+0

如何?你能举个例子吗? – user2985842

相关问题