- PCDATA ist ein Text, der von einem Parser analysiert wird. Tags innerhalb des Textes werden als Markup behandelt und Entitäten werden erweitert.
- CDATA ist ein Text, der nicht von einem Parser analysiert werden soll. Tags innerhalb des Textes werden nicht als Markup behandelt und Entitäten werden nicht erweitert.
Standardmäßig ist alles PCDATA. Im folgenden Beispiel wird das Ignorieren des Stamms analysiert und es enthält keinen Inhalt, sondern nur ein Kind.
<?xml version="1.0"?>
<foo>
<bar><test>content!</test></bar>
</foo>
Wenn wir, dass ein Element angeben mögen nur Text enthält, und keine untergeordneten Elemente verwenden wir das Schlüsselwort PCDATA, weil dieses Schlüsselwort gibt an, dass das Element parsable Zeichendaten enthalten muss - das heißt, jeden Text, außer die Zeichen kleiner als (<), Größer als (>), kaufmännisches Und (&), Zitat (') und Anführungszeichen (").
Im nächsten Beispiel ist bar CDATA und wird nicht analysiert und hat den Inhalt "Inhalt!".
<?xml version="1.0"?>
<foo>
<bar><![CDATA[<test>content!</test>]]></bar>
</foo>
Es gibt verschiedene Inhaltsmodelle in SGML. Das #PCDATA-Inhaltsmodell besagt, dass ein Element reinen Text enthalten kann. Der "geparste" Teil bedeutet, dass Markup (einschließlich PIs, Kommentare und SGML-Anweisungen) darin analysiert und nicht als Rohtext angezeigt wird. Es bedeutet auch, dass Entity-Referenzen ersetzt werden.
Eine andere Art von Inhaltsmodell, das reinen Textinhalt erlaubt, ist CDATA. In XML muss das Elementinhaltsmodell nicht implizit auf CDATA festgelegt werden, aber in SGML bedeutet dies, dass Markup- und Entitätsreferenzen im Inhalt des Elements ignoriert werden. In Attributen vom CDATA-Typ werden Entitätsreferenzen jedoch ersetzt.
In XML #PCDATA ist das einzige reine Text-Content-Modell. Sie verwenden es, wenn Sie Textinhalte im Element überhaupt zulassen wollen. Das CDATA-Inhaltsmodell kann explizit über das CDATA-Block-Markup in #PCDATA verwendet werden, aber der Elementinhalt ist möglicherweise nicht standardmäßig als CDATA definiert.
In einer DTD muss der Typ eines Attributs, das Text enthält, CDATA sein. Das CDATA-Schlüsselwort in einer Attributdeklaration hat eine andere Bedeutung als der CDATA-Abschnitt in einem XML-Dokument. Im CDATA-Bereich sind alle Zeichen zulässig (einschließlich <,>, &, 'und' Zeichen) mit Ausnahme des Endzeichens "]]>".
#PCDATA ist nicht geeignet für den Typ eines Attributs. Es wird für den Typ des "Blatt" -Text verwendet.
#PCDATA wird nur aus historischen Gründen mit einem Hashtag vorangestellt.
Die Verwirrung kann durch die Tatsache verursacht werden, dass CDATA geparst werden kann, aber von einem anderen Parser. Zum Beispiel wird der Inhalt eines 'script' -Elements, das in HTML CDATA ist, vom Javascript-Interpreter analysiert. –