我正在开发一个XML通信工具。我的第一步是验证我正在接受的de xml。 通信适用于V2G,因此xsd位于Web上。 我下载了模式,使用了一个免费的网络验证器来检查消息,但是我得到了一个错误,我无法理解(我是xml的新手)。
架构如下:
<!-- This XML document originates from the ISO/IEC 15118-2 standard which can be obtained from ISO at http://www.iso.org/iso/catalogue_detail.htm?csnumber=55366 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn:iso:15118:2:2010:AppProtocol"
targetNamespace="urn:iso:15118:2:2010:AppProtocol">
<xs:element name="supportedAppProtocolReq">
<xs:complexType>
<xs:sequence>
<xs:element name="AppProtocol" type="AppProtocolType" maxOccurs="20"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="supportedAppProtocolRes">
<xs:complexType>
<xs:sequence>
<xs:element name="ResponseCode" type="responseCodeType"/>
<xs:element name="SchemaID" type="idType" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="AppProtocolType">
<xs:sequence>
<xs:element name="ProtocolNamespace" type="protocolNamespaceType"/>
<xs:element name="VersionNumberMajor" type="xs:unsignedInt"/>
<xs:element name="VersionNumberMinor" type="xs:unsignedInt"/>
<xs:element name="SchemaID" type="idType"/>
<xs:element name="Priority" type="priorityType"/>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="idType">
<xs:restriction base="xs:unsignedByte"/>
</xs:simpleType>
<xs:simpleType name="protocolNameType">
<xs:restriction base="xs:string">
<xs:maxLength value="30"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="protocolNamespaceType">
<xs:restriction base="xs:anyURI">
<xs:maxLength value="100"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="priorityType">
<xs:restriction base="xs:unsignedByte">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="20"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="responseCodeType">
<xs:restriction base="xs:string">
<xs:enumeration value="OK_SuccessfulNegotiation"/>
<xs:enumeration value="OK_SuccessfulNegotiationWithMinorDeviation"/>
<xs:enumeration value="Failed_NoNegotiation"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
消息是:
<?xml version="1.0" encoding="UTF-8"?>
<supportedAppProtocolReq xmlns="urn:iso:15118:2:2010:AppProtocol" xmlns:xsi="urn:iso:15118:2:2010:AppProtocol">
<AppProtocol>
<ProtocolNamespace>urn:din:70121:2012:MsgDef</ProtocolNamespace>
<VersionNumberMajor>2</VersionNumberMajor>
<VersionNumberMinor>1</VersionNumberMinor>
<SchemaID>0</SchemaID>
<Priority>1</Priority>
</AppProtocol>
</supportedAppProtocolReq>
我得到的错误是:
错误 - 第3行,第14行:org.xml.sax.SAXParseException; lineNumber:3; columnNumber:14; cvc-complex-type.2.4.a:找到无效的内容 从元素&#39; AppProtocol&#39;开始。其中一个{AppProtocol}&#39;是 预期
因此,据我所知,无效标记与要求的标记相同。 当然是一件简单的事情,但这让我疯狂。