Elemento Complexo Vazio do XSD

Um elemento composto vazio não pode conter conteúdo, apenas atributos.

Elemento composto vazio:

Um elemento XML vazio:

<product prodid="1345" />

O elemento "product" acima mencionado não possui conteúdo. Para definir um tipo sem conteúdo, devemos declarar um tipo que pode conter apenas elementos em seu conteúdo, mas na verdade não declaramos nenhum elemento, por exemplo:

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

No exemplo acima, definimos um tipo composto com conteúdo composto. O elemento contentComplex informa que pretendemos limitar ou expandir o modelo de conteúdo de um tipo composto, enquanto a restrição integer declara um atributo mas não introduz qualquer conteúdo de elemento.

No entanto, também é possível declarar o elemento "product" de forma mais compacta:

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

Ou você pode dar um nome a um elemento complexType, e definir um atributo type para o elemento "product" e referenciar este complexType nome (usando este método, vários elementos podem referenciar o mesmo tipo composto):

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