Kompozytywne typy XSD z mieszaną zawartością

Mieszane kompozytowe typy mogą zawierać atrybuty, elementy oraz tekst.

Kompozytne typy z zawartością mieszaną

Element XML, "letter", zawiera tekst oraz inne elementy:

<letter>
Drogi Panu.<name>John Smith</name>.
Twoje zamówienie <orderid>1032</orderid>
bedzie wysłany w dniu <shipdate>2001-07-13</shipdate>.
</letter>

Poniższy schema deklaruje ten element "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>

Komentarz:Aby dane znakowe mogły występować między podelementami "letter", atrybut mixed musi być ustawiony na "true". Etykieta <xs:sequence> (name, orderid oraz shipdate) oznacza, że zdefiniowane elementy muszą pojawiać się kolejno wewnątrz elementu "letter".

Możemy również nadać nazwę elementowi complexType i umożliwić, aby atrybut type elementu "letter" odnosił się do tej nazwy complexType (dzięki temu kilka elementów może odnosić się do tego samego typu złożonego):

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