XML-Know How

Mixed Content

Mixed Content wird ermöglicht, indem bei der Element-Deklaration durch <xs:element> dem folgenden <xs:complexType> das Attribut mixed mit dem Wert »true« hinzugefügt wird:

<xs:element name="eintrag">
  <xs:complexType mixed="true">
    <xs:sequence>
      <xs:element ref="pferd" minOccurs="1"
        maxOccurs="1" />
      <xs:element ref="besitzer" minOccurs="1"
        maxOccurs="unbounded"/>
      <xs:element ref="jockey" minOccurs="1"
        maxOccurs="1"/>
    </xs:sequence>
   <xs:complexType>
</xs:element>

Zwischen allen Elementen, die in diesem <xs:complexType> mittels <xs:element> deklariert oder verwendet werden, können dann auch Textdaten stehen.

Anders als bei DTD-Mixed Content, bei dem Häufigkeit, Reihenfolge und Schachtelung der mit PCDATA vermischten Elemente überhaupt nicht definierbar sind, kann mit XSD die Struktur der Elemente in Mixed Content genauso präzise festgelegt werden, als läge kein Mixed Content vor. Es kann also auch innerhalb von <xs:complexType mixed="true"> durch <xs:sequence>, <xs:choice> und <xs:all> sowie per Häufigkeitsangaben durch Occurence-Attribute die Element-Struktur definiert werden.

Bei ineinander geschachtelten Konstruktionen kann für jede Ebene angegeben werden, ob Mixed Content erlaubt ist. So können innerhalb von Mixed Content auch Elemente platziert werden, deren Inhaltsmodell keinen Mixed Content vorsieht.