CDATA

Der Begriff CDATA, Bedeutung Zeichendaten, wird für unterschiedliche, aber verwandte Zwecke in der verwendet Markup -Sprachen SGML und Xml. Der Begriff zeigt, dass ein bestimmter Teil des Dokuments allgemein ist Zeichendaten, anstatt nicht-charakteristische Daten oder Zeichendaten mit einer spezifischeren, begrenzten Struktur.

CDATA -Abschnitte in XML

In einem XML -Dokument oder einer externen Entität a CDATA -Abschnitt ist ein Stück Elementinhalt, das markiert wird, um buchstäblich als Textdaten zu interpretieren, nicht als markierte Inhalte.[1] Ein CDATA -Abschnitt ist lediglich eine alternative Syntax zum Ausdrücken von Zeichendaten. Es gibt keinen semantischen Unterschied zwischen den Zeichendaten in einem CDATA -Abschnitt und den Zeichendaten in Standardsyntax, bei dem beispielsweise "<" und "&"werden durch" dargestellt "<" und "&", beziehungsweise.

Syntax und Interpretation

Ein CDATA -Abschnitt beginnt mit der folgenden Sequenz:

<! [CDATA [

und endet mit dem nächsten Auftreten der Sequenz:

]]>

Alle zwischen diesen beiden Sequenzen eingeschlossenen Zeichen werden als Zeichen interpretiert, nicht als Markup- oder Entitätsreferenzen. Jeder Charakter wird buchstäblich genommen, die einzige Ausnahme ist die ]]> Zeichenfolge. Im:

John Smith 

Die Start- und Ende -Absender -Tags werden als Markup interpretiert. Der Code:

John Smith]]> 

ist äquivalent zu:

& lt;Absender& gt;John Smith& lt;/Absender& gt; 

Somit haben die "Tags" genau den gleichen Status wie der "John Smith"; Sie werden als Text behandelt.

In ähnlicher Weise, wenn die Numerische Zeichenreferenz ð Erscheint in Elementinhalten, es wird als Single interpretiert Unicode Charakter 00F0 (kleiner Buchstaben Eth). Wenn dies jedoch in einem CDATA -Abschnitt erscheint, wird es als sechs Zeichen analysiert: Ampersand, Hash Mark, Digit 2, Digit 4, Digit 0, Semikolon.

Verwendung von CDATA -Abschnitten

Neue Autoren von XML -Dokumenten verstehen häufig den Zweck eines CDATA -Abschnitts falsch und glauben fälschlicherweise, dass sein Zweck darin besteht, Daten vor der Verarbeitung als gewöhnliche Charakterdaten zu schützen. Einige APIs für die Arbeit mit XML -Dokumenten bieten Optionen für den unabhängigen Zugriff auf CDATA -Abschnitte. Solche Optionen bestehen jedoch über die normalen Anforderungen von XML -Verarbeitungssystemen hinaus und ändern immer noch nicht die implizite Bedeutung der Daten. Charakterdaten sind Zeichendaten, unabhängig davon, ob sie über einen CDATA -Abschnitt oder ein normales Markup ausgedrückt werden. CDATA -Abschnitte sind nützlich, um XML -Code als Textdaten in einem XML -Dokument zu schreiben. Zum Beispiel, wenn man ein Buch mit einem Buch mit einem Buch mit XSL Wenn die Verwendung einer XML -Anwendung erläutert wird, wird das im Buch selbst angezeigte XML -Markup in der Quelldatei in einem CDATA -Abschnitt geschrieben.

Nisten

Ein CDATA -Abschnitt kann die Zeichenfolge nicht enthalten "]]>"Und deshalb ist es nicht möglich, dass ein CDATA -Abschnitt verschachtelte CDATA -Abschnitte enthält. Der bevorzugte Ansatz zur Verwendung von CDATA -Abschnitten für Codierungstext, die die Triade enthält."]]>"soll mehrere CDATA -Abschnitte verwenden, indem jedes Ereignis der Triade kurz vor der" geteilt wird ">". Zum Beispiel zu codieren"]]>"Man würde schreiben:

]]> 

Dies bedeutet, dass zu codieren "]]>"Ersetzen Sie in der Mitte eines CDATA -Abschnitts alle Vorkommen von"]]>" mit den folgenden:

]]]]>> 

Dies stoppt und startet effektiv den CDATA -Abschnitt.

Probleme mit der Codierung

In Textdaten wird ein Unicode -Zeichen, der in der in der Deklaration nicht verfügbar ist, nicht verfügbar Header kann mit a dargestellt werden nnn; Numerische Zeichenreferenz. Der Text in einem CDATA -Abschnitt ist jedoch streng auf die in der Codierung verfügbaren Zeichen beschränkt.

Aus diesem Grund stellt die Verwendung eines CDATA -Abschnitts programmgesteuert, um Daten zu zitieren, die möglicherweise enthalten könnten. '&' oder '<'Zeichen können Probleme verursachen, wenn die Daten zufällig Zeichen enthalten, die in der Codierung nicht dargestellt werden können. Abhängig von der Implementierung des Encoders können diese Zeichen verloren gehen, können in die Zeichen der Zeichen konvertiert werden nnn; Zeichenreferenz oder kann dazu führen, dass die Codierung fehlschlägt. Aber sie werden nicht aufrechterhalten.

Ein weiteres Problem ist, dass eine Xml Das Dokument kann während des Transports von einer Codierung zum anderen transkodiert werden. Wenn der Xml Das Dokument wird in einen begrenzteren Zeichensatz wie ASCII umgewandelt, die nicht mehr dargestellt werden können, werden in konvertiert nnn; Charakterreferenzen für eine verlustfreie Konvertierung. Innerhalb eines CDATA -Abschnitts können diese Zeichen jedoch überhaupt nicht dargestellt werden und müssen entfernt oder in ein Äquivalent konvertiert werden, wodurch der Inhalt des CDATA -Abschnitts geändert wird.

Verwendung von CDATA in der Programmausgabe

CDATA -Abschnitte in Xhtml Dokumente können von Webbrowsern unterschiedlich analysiert werden, wenn sie das Dokument als HTML machen, da HTML -Parser die CDATA -Start- und Endmarker nicht erkennen und HTML -Entitätsreferenzen wie z. B. nicht erkennen < innerhalb Stichworte. Dies kann zu Rendernproblemen in Webbrowsern führen und dazu führen Cross-Site-Scripting Schwachstellen, wenn Daten aus nicht vertrauenswürdigen Quellen angezeigt werden, da die beiden Arten von Parser nicht zustimmen, wo der CDATA -Abschnitt endet.

Da es nützlich ist, weniger als Zeichen verwenden zu können (<) und Verstärker (&) In Webseiten -Skripten und in geringerem Umfang ist es üblich, CDATA -Markierungen um den Text von Inline zu verwenden, ohne sich daran zu erinnern müssen, ihnen zu entkommen und Elemente in XHTML -Dokumenten. Damit das Dokument jedoch auch von HTML-Parsers analysiert werden kann, die die CDATA-Marker nicht erkennen, werden die CDATA-Marker normalerweise wie in dieser JavaScript Beispiel:

<Skript Typ="Text/JavaScript"> // <! [Cdata [ dokumentieren.schreiben("<"); //]]> Skript> 

oder dieses CSS Beispiel:

<Stil Typ="Text/CSS"> /*<! [Cdata [*/ Karosserie { Hintergrundbild: URL("marble.png? width = 300 & Höhe = 300") }      /*]]>*/ Stil> 

Diese Technik ist nur bei der Verwendung von Inline-Skripten und Stylesheets erforderlich und ist sprachspezifisch. CSS-Stylesheets unterstützen beispielsweise nur den zweiten Stil des Kommentierens (/ *… */), aber CSS hat auch weniger Bedarf an der < und & Zeichen als JavaScript und so weniger explizite CDATA -Marker.

CDATA in DTDs

CDATA-Typ-Attributwert

Im Dokumenttypdefinition (DTD) Dateien für SGML und XML, ein Attributwert kann als vom Typ CDATA bezeichnet werden: willkürliche Zeichendaten. Innerhalb eines Attributs vom CDATA-Typ ist Zeichen und Entitätsreferenzmarkup zulässig und wird verarbeitet, wenn das Dokument gelesen wird.

Zum Beispiel, wenn eine XML -DTD enthält

 Foo a CDATA #Implied> 

Dies bedeutet, dass Elemente mit dem Namen FOO optional ein Attribut mit dem Namen namens "haben."a"Das ist vom Typ CDATA. In einem XML -Dokument, das gemäß diesem DTD gültig ist, kann ein Element wie dieses angezeigt werden:

 a ="1 & amp; 2 sind & lt; &#51; &#x0a;" /> 

und ein XML -Parser würde das interpretieren "a"Der Wert des Attributs als Charakterdaten"1 & 2 sind <3".

CDATA-Typ Entity

Ein SGML oder XML -DTD kann auch Entitätserklärungen enthalten, bei denen der Token -CDATA verwendet wird, um anzuzeigen, dass die Entität aus Zeichendaten besteht. Die Charakterdaten können innerhalb der Deklaration selbst erscheinen oder extern verfügbar sein, auf die von a verwiesen wird Uri. In beiden Fällen ist in der Entität eine Referenzmarkup für Zeichenreferenz und Parameter -Entität zulässig und wird beim Lesen als solches verarbeitet.

 Attribut ="Y">  Name ="" " val ="" " GANZE ZAHL Name ="" " val ="" " LANG Name ="" " val ="" "/> </Svlobject> 

Siehe auch

Verweise

Externe Links