XSD 复杂的空元素

  • 定义和使用

    空的复杂元素不能具有内容,只能具有属性。
  • 复杂的空元素

    一个空的 XML 元素:
    <product prodid="1345" />
    上面的 "product" 元素根本没有内容;要定义不包含任何内容的类型,我们必须定义一个允许其内容包含元素的类型,但实际上我们并未声明任何元素,例如:
    <xs:element name="product">
      <xs:complexType>
        <xs:complexContent>
          <xs:restriction base="xs:integer">
            <xs:attribute name="prodid" type="xs:positiveInteger"/>
          </xs:restriction>
        </xs:complexContent>
      </xs:complexType>
    </xs:element>
    在上面的示例中,我们定义了具有复杂内容的复杂类型;complexContent 元素表示我们打算限制或扩展复杂类型的内容模型,而整数的限制声明一个属性,但不引入任何元素内容。
    但是,可以更紧凑地声明 "product" 元素,如下所示:
    <xs:element name="product">
      <xs:complexType>
        <xs:attribute name="prodid" type="xs:positiveInteger"/>
      </xs:complexType>
    </xs:element>
    或者,您可以给 complexType 元素命名,并让 "product" 元素具有一个类型属性,该属性引用 complexType 的名称(如果使用此方法,则多个元素可以引用相同的复杂类型):
    <xs:element name="product" type="prodtype"/>
    <xs:complexType name="prodtype">
      <xs:attribute name="prodid" type="xs:positiveInteger"/>
    </xs:complexType>