XSD验证错误:s4s-elt-must-match错误

时间:2015-06-24 08:01:13

标签: xml xsd xsd-validation

请帮助解决XSD的以下错误,因为我是xsd的新手

SOAP响应XML示例

 <ACCOUNTDETAILS>
 <STATUS></STATUS>
 <RESPONSE></RESPONSE>
 <ACCOUNTID>
 <DETAILS>
 <NAME></NAME>
 <CATEGORY></CATEGORY>
 <LASTMODIFIED></LASTMODIFIED>
  </DETAILS>
  </ACCOUNTID>
  </ACCOUNTDETAILS>

XSD生成

<xsd:element name="AccountDetailsResponse">
  <xsd:element name="ACCOUNTDETAILS" type="account:Account">
     <xsd:complexType>
       <xsd:sequence>
         <xsd:element type="xsd:string" name="STATUS"/>
         <xsd:element type="xsd:string" name="RESPONSE"/>
         <xsd:element name="ACCOUNTID">
           <xsd:complexType>
             <xsd:sequence>
               <xsd:element name="DETAILS">
                 <xsd:complexType>
                   <xsd:sequence>
                     <xsd:element type="xsd:string" name="NAME"/>
                     <xsd:element type="xsd:string" name="CATEGORY"/>
                     <xsd:element type="xsd:string" name="LASTMODIFIED"/>
                   </xsd:sequence>
                 </xsd:complexType>
               </xsd:element>
             </xsd:sequence>
           </xsd:complexType>
         </xsd:element>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
  </xsd:element>

XSD错误:

s4s-elt-must-match.1:'AccountDetailsResponse'的内容必须匹配(注释?,(simpleType |  complexType)?,(unique | key | keyref)*))。从:element。

开始发现问题

提前致谢

1 个答案:

答案 0 :(得分:1)

很可能你没有向我们提供整个输入。从您的架构中,我希望您发布的摘录周围有一个元素AccountDetailsResponse

当你想到其他元素时,你不能将xs:element作为另一个xs:element的直接孩子。最有可能的是,使用与其他元素(有序的子序列)相同的方法,可以达到你想要的效果:

<xsd:element name="AccountDetailsResponse">
   <xsd:complexType>
      <xsd:sequence>
         <xsd:element name="ACCOUNTDETAILS" type="account:Account">
         ...

这也不起作用,因为您不能同时拥有type属性和嵌入式xs:complexType。所以你可能想要摆脱那个type属性。所以以下内容应该有效:

<xsd:element name="AccountDetailsResponse">
   <xsd:complexType>
      <xsd:sequence>
         <xsd:element name="ACCOUNTDETAILS">
         ...