Kompozytowe puste elementy XSD

Puste elementy złożone nie mogą zawierać treści, mogą zawierać tylko atrybuty.

Złożony pusty element:

Pusty element XML:

<product prodid="1345" />

Element "product" nie zawiera żadnej treści. Aby zdefiniować typ bez treści, musimy zadeklarować typ, który może zawierać tylko elementy, ale w rzeczywistości nie deklarujemy żadnych elementów, na przykład:

<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>

W powyższym przykładzie zdefiniowaliśmy typ złożony zawierający treść złożoną. Element <xs:complexContent> sygnalizuje, że planujemy ograniczyć lub rozszerzyć model treści typy złożone, podczas gdy ograniczenie integer deklaruje atrybut bez wprowadzania żadnych elementów zawartości.

Jednak również można bardziej zwięźle zadeklarować ten element "product":

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

Albo możesz nadać nazwę elementowi complexType, a następnie ustawić atrybut type dla elementu "product" i odnosić się do tej nazwy complexType (poprzez ten sposób, kilka elementów może odnosić się do tego samego typu kompozytowego):

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