【发布时间】:2014-07-01 07:40:52
【问题描述】:
我在这里有点新,正在学习 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" 属性,但它也不起作用。
我仍然不明白真正的问题是什么。
任何建议都会有所帮助。
【问题讨论】:
-
好的,我得到了我的解决方案,只需将 maxOccurs="unbounded 放在这一行:
-
如果您找到了解决方案,请将其发布为答案 :)。
-
有消息来了..你没有声望来发布我们自己的答案