Комплексные пустые элементы 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" предоставляет сигнал о том, что мы намерены ограничить или расширить модель содержания сложного типа, а ограничение "integer" объявляет атрибут, но не вводит никакого содержимого элементов.

Но также можно более紧凑о声明此 "product" элемент:

<xs:element name="product">
  <xs:complexType>
    <xs:attribute name="prodid" type="xs:positiveInteger"/>
  </xs:complexType>
</xs:element>

Или вы можете дать имя комплексному элементу и установить атрибут type для элемента "product", чтобы он ссылался на это имя комплексного типа (с помощью этого метода, несколько элементов могут ссылаться на один и тот же комплексный тип):

<xs:element name="product" type="prodtype"/>
<xs:complexType name="prodtype">
  <xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>