我在这里有点新学习XSD Schema。我有一个上传XML文件的函数,首先它上传模式然后当它上传XML文件时它抛出了这个异常:
"The element 'X' has invalid child element 'Y'. List of possible elements expected: 'Z'."
这是我的XSD文件:
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="survey">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="***"/>
<xs:element name="questions">
<xs:complexType>
<xs:sequence>
<xs:element name="X" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:complexType>
<xs:sequence>
<xs:element name="option" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="***" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Y" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="Z">
<xs:complexType>
<xs:sequence>
<xs:element name="***" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:byte">
<xs:attribute type="xs:string" name="***" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute type="xs:string" name="***" use="optional"/>
<xs:attribute type="xs:string" name="***" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="Z" minOccurs="0">
<xs:complexType>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="***">
<xs:complexType>
<xs:sequence>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我看过类似的帖子,有些人建议将<xs:sequence>
更改为<xs:all>
;我这样做但是没有用。其他人建议在根元素中添加elementFormDefault="qualified"
属性,但它也无效。
我仍然不明白什么是真正的问题。
任何建议都会有所帮助。
答案 0 :(得分:0)
至少你的XSD出现了错误:
结束&#34;&#34;在宣布&#34; Y&#34;之前元素不正确。 删除它,我的猜测是它会工作。
<xs:element name="X" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:complexType>
<xs:sequence>
<xs:element name="option" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="xs:string" name="***" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element> <------- REMOVE THIS
<xs:element name="Y" minOccurs="0">