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:
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>
具有类型属性
的嵌套复杂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:
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>