Los últimos tutoriales de desarrollo web
 

XSD elementos vacíos


Un elemento complejo vacío no puede tener contenido, sólo atributos.


Los elementos vacíos complejos

Un elemento XML vacío:

<product prodid="1345" />

El "product" elemento anterior tiene ningún contenido en absoluto. Para definir un tipo sin contenido, hay que definir un tipo que permite que los elementos en su contenido, pero que en realidad no declarar los elementos, como este:

<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 un contenido complejo. Las señales de los elementos complexContent que tenemos la intención de restringir o extender el modelo de contenido de un tipo complejo, y la restricción de número entero declara un atributo pero no introduce ningún elemento de contenido.

Sin embargo, es posible declarar el "product" elemento de forma más compacta, como esto:

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

O se puede dar el elemento complexType un nombre, y dejar que el "product" elemento tiene un atributo de tipo que se refiere al nombre de la tipoCompuesto (si se utiliza este método, varios elementos se refieren al mismo tipo complejo):

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

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