试图解决为什么XSD中的复杂元素不能具有类型属性和嵌套复杂元素? 。所有类型只是用户定义的数据类型,因此应该能够包含任何其他用户定义的数据类型?
XSD解析器抛出错误:
该元素具有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>
答案 0 :(得分:3)
直观,两者在一起是不可能的,因为 命名 和 匿名 是的对立强>
正式,W3C XML Schema Recommendation中违反的确切约束为src-element.3
:
架构表示约束:元素声明表示确定
除了对
<element>
元素施加的条件之外 模式架构的信息项:以下所有必须 是真的:
- 醇>
类型,
<simpleType>
或<complexType>
互斥。[ 1,2和4;见完全约束here ]
<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>
<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>