XSD Elementos vacíos


Los elementos vacíos complejos no pueden contener contenido, solo pueden tener atributos.


Elementos vacíos complejos:

Un elemento XML vacío:

<product prodid="1345" />

El elemento "product" anterior no tiene contenido en absoluto. Para definir un tipo sin contenido, debemos declarar un tipo que en su contenido solo pueda contener elementos, pero en realidad no declaramos ningún elemento, por ejemplo así:

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

En el ejemplo anterior, definimos un tipo complejo con contenido complejo. El elemento complexContent indica que pretendemos restringir o ampliar el modelo de contenido de un tipo complejo, y la restricción integer declara un atributo pero no introduce ningún contenido de elemento.

Pero también es posible declarar este elemento "product" de forma más compacta:

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

Alternativamente, puede asignar un nombre a un elemento complexType y luego establecer un atributo type en el elemento "product" para hacer referencia a ese nombre complexType (mediante este método, varios elementos pueden hacer referencia al mismo tipo complejo):

<xs:element name="product" type="prodtype"/>

<xs:complexType name="prodtype">
  <xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
Otras extensiones