Error: The element has a type attribute as well as an anonymous child type

Error: The element has a type attribute as well as an anonymous child type

具有类型属性

的嵌套复杂XSD个元素

只是想弄清楚为什么 XSD 中的复杂元素不能有类型属性和嵌套的复杂元素? .毕竟类型只是用户定义的数据类型,因此应该能够包含任何内容,包括其他用户定义的数据类型?。

XSD 解析器抛出错误:

The element has a type attribute as well as an anonymous child type

还是我的理解遗漏了什么?

所以,如果我必须达到以下 XSD,有可能吗?

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="A" type ="A">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="B" type ="B">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="C" type ="C">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="SomeElement" type="xs:int"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

元素的类型可以命名为匿名

凭直觉,两者在一起是不可能的,因为 named 匿名 对立.

官方,在W3C XML Schema Recommendation is src-element.3中违反了确切的约束:

Schema Representation Constraint: Element Declaration Representation OK

In addition to the conditions imposed on <element> element information items by the schema for schemas: all of the following must be true:

  1. type and either <simpleType> or <complexType> are mutually exclusive.

    [1, 2, and 4 elided; see full constraint here]

XSD 使用命名类型

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="A" type="A"/>
  <xs:complexType name="A">
    <xs:sequence>
      <xs:element name="B" type="B">
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="B">
    <xs:sequence>
      <xs:element name="C" type="C">
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="C">
    <xs:sequence>
      <xs:element name="SomeElement" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

XSD 使用匿名类型

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="A">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="B">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="C">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="SomeElement" type="xs:int"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>