Xml XSD验证错误:cos元素一致:元素与元素不一致

Xml XSD验证错误:cos元素一致:元素与元素不一致,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我对XML模式应用程序有问题。第一种情况是一个序列中有元素引用。这个案例有效,但我有一个请求,它允许main元素中有一个元素onlyone,或者onlyone元素问题(不在main元素中)。我尝试了很多解决方案,特别是将元素分解为序列,并将元素问题引用为新定义的元素。这是可行的,但当我将complexType添加到元素problem中时,它会作为错误警告我。我需要有新的元素问题和要求的条件 XSD: <xs:sequence> <xs:sequence> &l

我对XML模式应用程序有问题。第一种情况是一个序列中有元素引用。这个案例有效,但我有一个请求,它允许
main
元素中有一个元素
onlyone
,或者
onlyone
元素
问题
(不在
main
元素中)。我尝试了很多解决方案,特别是将元素分解为序列,并将元素
问题
引用为新定义的元素。这是可行的,但当我将
complexType
添加到元素
problem
中时,它会作为错误警告我。我需要有新的元素
问题
和要求的条件

XSD:

<xs:sequence>
  <xs:sequence>
    <xs:element ref="el1" minOccurs="1" maxOccurs="1"/>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="el2" minOccurs="0" maxOccurs="1"/>
      <xs:element name="problem" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:choice>
            <xs:sequence>
              <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="inside1" maxOccurs="unbounded"/>
                <xs:element ref="inside2" maxOccurs="unbounded"/>
              </xs:choice>
            </xs:sequence>
          </xs:choice>
        </xs:complexType>
      </xs:element>
      <xs:element ref="onlyone" minOccurs="0" maxOccurs="1"/>
    </xs:choice>
    <xs:element ref="el3" minOccurs="1" maxOccurs="1"/>
  </xs:sequence>
  <xs:sequence>
    <xs:element ref="el1" minOccurs="1" maxOccurs="1"/>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="el2" minOccurs="0" maxOccurs="1"/>
      <xs:element name="problem" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:choice>
            <xs:sequence>
              <xs:choice minOccurs="0" maxOccurs="unbounded">
                <xs:element ref="inside1" maxOccurs="unbounded"/>
                <xs:element ref="onlyone" minOccurs="0" maxOccurs="1"/>
                <xs:element ref="inside2" maxOccurs="unbounded"/>
              </xs:choice>
            </xs:sequence>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:choice>
    <xs:element ref="el3" minOccurs="1" maxOccurs="1"/>
  </xs:sequence>
</xs:sequence>

XMLSpy在保存时给我写信:

元素“problem”与元素“problem”不一致。cos元素一致。1:必须同时命名类型定义(“{anonymous}”和“{anonymous}”)

XSD有一个约束,要求内容模型中相同的命名元素具有一致的内容模型。您的
问题
元素由于在同一个高级内容模型中有两个不同的内容模型而违反了此约束,因此确实是一个问题

决议可以采取以下形式之一:

  • 重命名一个
    问题
    元素
  • 使两个
    问题的内容模型一致
    (更好的是,通常被引用(通过
    xs:element/@ref
  • 删除两个不一致的
    问题
    内容模型之间的兄弟关系
  • XSD有一个约束,要求内容模型中的相同命名元素具有一致的内容模型。您的
    问题
    元素在同一高级内容模型中具有两个不同的内容模型,从而违反了此约束,因此确实是个问题

    决议可以采取以下形式之一:

  • 重命名一个
    问题
    元素
  • 使两个
    问题的内容模型一致
    (更好的是,通常被引用(通过
    xs:element/@ref
  • 删除两个不一致的
    问题
    内容模型之间的兄弟关系