XSD-komplexe leere Elemente

Leere komplexe Elemente können keine Inhalte enthalten und nur Eigenschaften haben.

Ein komplexer leerer Element:

Eine leere XML-Element:

<product prodid="1345" />

Das "product"-Element enthält im Grunde genommen nichts. Um einen Typ ohne Inhalt zu definieren, müssen wir einen Typ deklarieren, der nur Elemente in seinem Inhalt enthalten kann, aber tatsächlich keine Elemente deklarieren, wie zum Beispiel:

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

Im obigen Beispiel haben wir einen komplexen Typ mit komplexem Inhalt definiert. Der Signal des "complexContent"-Elements ist, dass wir die Inhaltsmuster eines komplexen Typs einschränken oder erweitern möchten, während die "integer"-Einschränkung eine Eigenschaft deklariert, aber keine Elemente hinzufügt.

Allerdings kann dieser "product"-Element auch noch kompakter deklariert werden:

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

Oder Sie können einem complexType-Element einen Namen geben und dem "product"-Element ein type-Attribut setzen und diesen complexType-Namen referenzieren (durch diese Methode können mehrere Elemente denselben komplexen Typen referenzieren):

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