在Schema中,complexType用于定义元素和属性,通常情况下,我们定义一个元素包含了哪些子元素或者是哪些属性,例如:
<xs:element name="name" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
<xs:complexType name="personInfo">
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="birthday"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required">
</xs:complexType>
<xs:element name="person" type="personInfo"/>
而对于simpleType,它不是定义一个元素中有哪些子元素或者哪些属性,而是定义元素或者属性的范围,例如:
<xs:simpleType name="ageRange">
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="150"/>
</xs:restriction>
</xs:simpleType>
<xs:attribute name="age" type="ageRange"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="birthday" type="xs:date"/>
<xs:complexType name="personInfo">
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="birthday"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required">
</xs:complexType>
<xs:element name="person" type="personInfo"/>
而对于simpleType,它不是定义一个元素中有哪些子元素或者哪些属性,而是定义元素或者属性的范围,例如:
<xs:simpleType name="ageRange">
<xs:restriction base="xs:integer">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="150"/>
</xs:restriction>
</xs:simpleType>
<xs:attribute name="age" type="ageRange"/>