请帮助解决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。
开始发现问题提前致谢
答案 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">
...