Tipos compuestos con contenido mixto de XSD

Los tipos compuestos mixtos pueden contener atributos, elementos y texto.

Tipos compuestos con contenido mixto

El elemento XML, "letter", contiene texto y otros elementos:

<letter>
Estimado Sr.<name>John Smith</name>.
Su orden <orderid>1032</orderid>
será enviado el <shipdate>13 de julio de 2001</shipdate>.
</letter>

El siguiente esquema declara este elemento "letter":

<xs:element name="letter">
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="orderid" type="xs:positiveInteger"/>
      <xs:element name="shipdate" type="xs:date"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

Notas:Para que los datos de caracteres puedan aparecer entre los subelementos de "letter", el atributo mixed debe establecerse en "true". La etiqueta <xs:sequence> (name, orderid y shipdate) significa que los elementos definidos deben aparecer sucesivamente dentro del elemento "letter".

También podemos dar un nombre al elemento complexType y hacer que el atributo type del elemento "letter" se refiera a este nombre de complexType (de esta manera, varios elementos pueden referirse al mismo tipo compuesto):

<xs:element name="letter" type="lettertype"/>
<xs:complexType name="lettertype" mixed="true">
  <xs:sequence>
    <xs:element name="name" type="xs:string"/>
    <xs:element name="orderid" type="xs:positiveInteger"/>
    <xs:element name="shipdate" type="xs:date"/>
  </xs:sequence>
</xs:complexType>