Konzepte Content-Repräsentation & Markup-Sprachen

7.4 Mixed Content

In den bisher gezeigten Beispielen für Elementtyp-Deklarationen bestand das Content Model — die rechte Seite der Bildungsregel — immer aus Elementtypen, d. h. Nichtterminalen. Es lassen sich somit also nur ineinander verschachtelte Strukturelemente beschreiben, die keinerlei explizite Inhaltsinformationen tragen. Ein Content Model dieser Art wird auch Element Content genannt.

Mit Hilfe des Terminalsymbols #PCDATA läßt sich darüber hinaus spezifizieren, an welchen Stellen im Content Model textuelle Daten erlaubt sind. Das Zeichen # (Reserved name indicator; RNI) zeigt dabei an, daß es sich bei der folgenden Zeichenkette nicht um einen Generic Identifier handelt, sondern um eine Zeichenkette, die in XML eine besondere Bedeutung hat.

Im einfachsten Fall bildet #PCDATA das Content Model für einen Elementtyp. Folgende Regel deklariert einen Typ a, dessen Inhalt ausschließlich aus Text bestehen darf:

Beispiel 7. Elementtyp mit #PCDATA als Content Model

	<!ELEMENT a (#PCDATA)>
      

Unter bestimmten Umständen ist es notwendig, Textdaten und Elemente gleichermaßen als Elementinhalt zu erlauben. Da in diesem Fall Inhalts- und Strukturinformationen miteinander vermischt sind, muß der XML-Prozessor die textuellen Daten parsieren, um festzustellen, ob sie Markup enthalten. Aus diesem Grund werden Textdaten als Parsed Character Data — kurz PCDATA — bezeichnet. Können als Inhalt eines Elements PCDATA und Elemente vermischt auftreten, so spricht man von Mixed Content. Als Anwendung für ein solches Modell sei hier die Einbindung von em-Elementen innerhalb eines Absatzes (p) in HTML genannt:

Beispiel 8. Betonter Text in einem HTML-Dokument

	<p>Dieser Absatz enthält <em>betonten</em> Text.</p>
      

Das Terminal #PCDATA darf ausschließlich als erstes Symbol in einer Auswahl mit beliebig vielen weiteren Nichtterminalen verwendet werden. Dem resultierenden Modell muß schließlich der Häufigkeitsoperator * hinzugefügt werden, um die wiederholte Einbindung von Elementen des aufgeführten Typs bzw. der Textdaten zu ermöglichen. Eine Regel, die entsprechend dem obigen Beispiel Elemente vom Typ em und strong umfaßt, könnte demnach wie Beispiel 9 gebildet werden.

Beispiel 9. Elementtyp-Deklaration für Mixed Content

	<!ELEMENT p (#PCDATA|em|strong)*>
      

Die strikten Regeln für die Deklaration von Mixed Content ergeben sich aus den langjährigen Erfahrungen mit SGML, wo sich die Verwendung von Sequenz- oder Häufigkeitsoperatoren in Mixed Content als nicht sinnvoll erwiesen haben. Der weitaus größte Teil bestehender Anwendungen setzt das Symbol #PCDATA so ein, wie in Beispiel 9 beispielhaft gezeigt. Die verbleibenden Fälle lassen sich leicht durch die Einführung zusätzlicher Elementtypen auf dieses Content Model abbilden.

Kommentare (0)

Ihr Kommentar

Name