XSD Komplekse tomme element

En tom kompleks element kan ikke indeholde indhold, men kun have egenskaber.

Kompakt tom element:

En tom XML-element:

<product prodid="1345" />

Denne "product"-element har ingen indhold. For at definere en type uden indhold, skal vi erklære en type, der kun kan indeholde elementer i indholdet, men vi vil faktisk ikke erklære nogen elementer, såsom dette:

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

I det ovenstående eksempel har vi defineret en kompleks type med kompleks indhold. Signalet fra "complexContent"-elementet er, at vi ønsker at begrænse eller udvide indholdsmodellen for en kompleks type, mens en integer-begrænsning erklærer en egenskab, men ikke introducerer nogen elementindhold.

Men det er også muligt at erklære "product"-elementet mere kompakt:

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

Eller du kan give et navn til en complexType-element, og derefter sætte en type-attribut på "product"-elementet og referere til dette complexType-navn (ved hjælp af denne metode kan flere elementer referere til samme komplekse type):

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