两个不同 xsd 文件中的相同元素名称
Same element name in two different xsd files
我有两个 xsd files.However ,两个文件中的元素名称相同。
所以,为了克服冲突,我创建了绑定文件。
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 求值导致目标节点为空
请指教,我该如何解决。
由于两个 XML 元素不同,请考虑使用不同的名称 - RequestXml、ResponseXml。简单得多,因为您不需要使用绑定。 Keep It Simple 校长在行动!
我有两个 xsd files.However ,两个文件中的元素名称相同。 所以,为了克服冲突,我创建了绑定文件。
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 求值导致目标节点为空
请指教,我该如何解决。
由于两个 XML 元素不同,请考虑使用不同的名称 - RequestXml、ResponseXml。简单得多,因为您不需要使用绑定。 Keep It Simple 校长在行动!