【问题标题】:"The element 'X' has invalid child element 'Y'. List of possible elements expected: 'Z'."“元素‘X’的子元素‘Y’无效。预期的可能元素列表:‘Z’。”
【发布时间】: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>

看过类似的帖子,有人建议把&lt;xs:sequence&gt;改成&lt;xs:all&gt;;我已经这样做了,但没有工作。其他人建议在根元素 ` 中添加 elementFormDefault="qualified" 属性,但它也不起作用。

我仍然不明白真正的问题是什么。

任何建议都会有所帮助。

【问题讨论】:

  • 好的,我得到了我的解决方案,只需将 maxOccurs="unbounded 放在这一行:
  • 如果您找到了解决方案,请将其发布为答案 :)。
  • 有消息来了..你没有声望来发布我们自己的答案

标签: xml xsd schema


【解决方案1】:

至少你的 XSD 中有错误:

在声明“Y”元素之前的结束“”是不正确的。 删除它,我猜它会起作用。

<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">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 2013-10-31
    • 2020-10-06
    • 2011-07-15
    • 2012-05-23
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    相关资源
    最近更新 更多