Tipos de contenido
El tipo de contenido se refiere a las características del contenido de un elemento.
El contenido de un elemento puede ser de tres tipos:
- Simple.
- Complejo.
- Mixto.
Además, un elemento puede no tener contenido.
Contenido simple
Un elemento con contenido simple es aquel elemento que no contiene otros elementos.
<precio divisa="EUR">10.32</precio>
Este tipo de elementos se definen con simpleContent
.
No debemos confundir el contenido del elemento con el tipo de elemento. En el ejemplo anterior, al ser un elemento que contiene un atributo, se trata de un tipo complejo (complexType
), pero su contenido es simple (simpleContent
), ya que solo contiene un valor decimal.
Contenido complejo
Un elemento con contenido simple es aquel elemento que contiene uno o varios elementos.
Por ejemplo.
<valores>
<numero>10</numero>
<numero>20</numero>
</valores>
Este tipo de estructuras se definen con complexContent
.
En el ejemplo anterior, tenemos un elemento de tipo complejo (complexType
) con contenido complejo (complexContent
).
Contenido mixto
Alternativamente, el contenido también puede ser mixto, es decir, mezclando cadenas de caracteres con elementos.
<texto>Esquema <azul>XSD</azul></texto>
En el ejemplo anterior, tenemos un elemento de tipo complejo (complexType
) con contenido mixto.
El contenido mixto se define mediante el atributo mixed
del elemento complexType
. Se debe asignar el valor true
:
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="edad" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
Sin contenido
Por último, un elemento puede no tener contenido. En este caso, se le denomina elemento vacío. Un elemento vacío se puede expresar de dos formas:
- Mediante una única etiqueta.
- Mediante una etiqueta de apertura y una de cierre sin cotenido entre las dos.
Por ejemplo, ambos elementos son equivalentes:
<luz/>
<luz></luz>
Los elementos vacíos se pueden validar mediante un complexType
vacío, sin elementos hijo:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="luz">
<xs:complexType />
</xs:element>
</xs:schema>
Un elemento vacío puede tener atributos. Por ejemplo:
<luz encendida="si" />
<luz encendida="si"></luz>
En este caso, solo se define el atributo:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="luz">
<xs:complexType>
<xs:attribute name="encendida" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>