Tipos Compostos com Conteúdo Misto do XSD

Tipos compostos mistos podem conter atributos, elementos e texto.

Tipos compostos com conteúdo misto

O elemento XML, "letter", contém texto e outros elementos:

<letter>
Prezado Sr.<name>John Smith</name>.
Seu pedido <orderid>1032</orderid>
será enviado em <shipdate>2001-07-13</shipdate>.
</letter>

O seguinte schema declara esse 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 os dados de caractere possam aparecer entre os sub-elementos do "letter", a propriedade "mixed" deve ser configurada como "true". A etiqueta <xs:sequence> (name, orderid e shipdate) significa que os elementos definidos devem aparecer em sequência dentro do elemento "letter".

Também podemos dar um nome ao elemento "complexType" e fazer com que o atributo "type" do elemento "letter" faça referência a esse nome do "complexType" (por esse método, vários elementos podem referenciar o mesmo tipo composto):

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