具有 type 属性的嵌套复杂 XSD 元素
只是想弄清楚为什么 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>
元素的类型可以被命名or匿名的
直观地,两者一起是不可能的,因为named and 匿名的 are 对立面.
正式,违反的确切约束W3C XML 模式推荐 http://www.w3.org/TR/xmlschema-1/ is src-element.3 http://www.w3.org/TR/xmlschema-1/#src-element:
模式表示约束:元素声明表示 OK
除了施加的条件外<element>
元素
模式的信息项:以下所有内容都必须
是真实的:
-
类型和任一<simpleType>
or <complexType>
是互斥的。
[1, 2, and 4 elided; see full constraint here http://www.w3.org/TR/xmlschema-1/#src-element]
使用命名类型的 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)