Zweipunktnull
Commander
- Registriert
- Dez. 2004
- Beiträge
- 2.546
Hallo,
könnte mir bitte jemand den genauen Unterschied zw. CDATA und PCDATA erklären. Hier zunächst mal die Definitionen von SELFHTML.
Danach kann ich kaum Unterschiede finden. Denn für beide gilt schließlich, dass Entitäten wie z. B. ü erkannt und umgesetzt werden. Hier nehme ich das erste Mal Anstoß, da CDATA ja im Unterschied zu PCDATA gar nicht analysiert werden sollte. Da allerdings HTML-Entitäten erkannt werden, stimmt das ja schon nicht so ganz, oder?
Wenn man nach meiner Fragestellung googelt, dann bekommt man die Antwort, dass HTML-Elemente in PCDATA im Unterschied zu CDATA erkannt und umgesetzt werden. Das scheint so der Hauptunterschied zu sein. Nur bin ich mit dieser Antwort nicht so recht zufrieden, da ja eigentlich sowohl in PCDATA als auch in CDATA keine weiteren HTML-Elemente vorkommen dürfen. Das gilt ja auch explizit für PCDATA.
Somit stehen beide für eine Zeichenkette, die keine weiteren Elemente enthalten darf, sondern lediglich quasi aus "plain text" bestehen darf, und die darüber hinaus analysiert wird und in der HTML-Entitäten ersetzt werden. Und wo ist jetzt noch mal genau der Unterschied?
könnte mir bitte jemand den genauen Unterschied zw. CDATA und PCDATA erklären. Hier zunächst mal die Definitionen von SELFHTML.
#PCDATA
#PCDATA steht für parsed character data, zu deutsch: vom Seite HTML-Parser analysierte Zeichendaten. Es handelt sich in HTML normalerweise um Text, der innerhalb eines Elements, also zwischen Anfangs- und End-Tag notiert werden kann. Solcher Text kann aus Zeichen bestehen, die in der Seite Zeichenreferenz genannt sind. Benannte Zeichen wie ü sind also ebenso erlaubt wie numerische Notationen von der Art € oder €. Solche Notationen werden erkannt und umgesetzt. PCDATA-Zeichendaten dürfen jedoch selbst nicht aus Tags bestehen. Ein Element, welches nur solche Zeichendaten enthalten darf, darf also keine HTML-Elemente enthalten. Dies gilt zum Beispiel für die Elemente nach unten title und nach unten textarea.
#CDATA
#CDATA steht für character data, zu deutsch: Zeichendaten. Es handelt sich um Text, der keine weiteren HTML-Elemente enthalten kann. In HTML ist das typischerweise Text, der bei einer Wertzuweisung an ein Attribut vorkommt. Solcher Text darf bei HTML 4.0 aus allen Zeichen bestehen, die in der Seite Zeichenreferenz genannt sind. Benannte Zeichen wie ü sind also ebenso erlaubt wie numerische Notationen von der Art € oder €. Solche Notationen werden erkannt und umgesetzt. HTML-Auszeichnungen, also die Notation von HTML-Elementen, wird in CDATA-Bereichen dagegen nicht erkannt. Das einzige, wonach gesucht wird und was erkannt wird, ist die Zeichenfolge </. Deshalb müssen Sie das Zeichen < in Wertzuweisungen an Attribute unbedingt wie üblich durch < maskieren. Leerzeichen am Beginn oder Ende eines #CDATA-Textbereichs wird normalerweise abgeschnitten.
#CDATA schränkt zwar in keiner Weise ein, welcher Text einem Attribut als Wert zugewiesen wird. Dennoch sind in vielen Fällen nur bestimmte typische Angaben üblich. So fallen Seite Sprachenkürzel beispielsweise auch unter #CDATA, aber erwünscht ist an der entsprechenden Stelle eine Angabe nach einem bestimmten Schema. Meistens werden solche Schemata durch Seite RFCs geregelt. In dieser Attribut-Referenz wird auf solche RFCs hingewiesen.
Danach kann ich kaum Unterschiede finden. Denn für beide gilt schließlich, dass Entitäten wie z. B. ü erkannt und umgesetzt werden. Hier nehme ich das erste Mal Anstoß, da CDATA ja im Unterschied zu PCDATA gar nicht analysiert werden sollte. Da allerdings HTML-Entitäten erkannt werden, stimmt das ja schon nicht so ganz, oder?
Wenn man nach meiner Fragestellung googelt, dann bekommt man die Antwort, dass HTML-Elemente in PCDATA im Unterschied zu CDATA erkannt und umgesetzt werden. Das scheint so der Hauptunterschied zu sein. Nur bin ich mit dieser Antwort nicht so recht zufrieden, da ja eigentlich sowohl in PCDATA als auch in CDATA keine weiteren HTML-Elemente vorkommen dürfen. Das gilt ja auch explizit für PCDATA.
Somit stehen beide für eine Zeichenkette, die keine weiteren Elemente enthalten darf, sondern lediglich quasi aus "plain text" bestehen darf, und die darüber hinaus analysiert wird und in der HTML-Entitäten ersetzt werden. Und wo ist jetzt noch mal genau der Unterschied?