复杂类型

XML Schema 教程 · 第 5 章 · 7 次浏览

复杂类型 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>