复杂类型
复杂类型 complexType 描述含子元素/属性的元素。属性默认可选,use="required" 设为必填,类型同理可约束。
内容模型
- sequence:子元素按顺序
- choice:多选一
- all:全部出现(顺序不限,各最多一次)
出现次数
minOccurs/maxOccurs:0 表示可选,unbounded 无限次。
代码示例
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="order">
<xs:complexType>
<xs:sequence>
<xs:element name="items" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="product_id" type="xs:integer"/>
<xs:element name="qty" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- 二选一:货到付款或在线支付 -->
<xs:choice>
<xs:element name="cod"/>
<xs:element name="online_pay"/>
</xs:choice>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:attribute name="status" default="pending">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="pending"/>
<xs:enumeration value="paid"/>
<xs:enumeration value="shipped"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>