Dass innerhalb von (nicht leeren) Elementen Zeichendaten (character data) stehen dürfen, ist nicht weiter überraschend. Wir haben dies schon bei den vorangegangenen Beispielen stillschweigend verwendet. Abgesehen davon, dass die DTD Elemente deklarieren kann, die ihrerseits nur andere Elemente, jedoch keine Zeichen enthalten dürfen, gibt es auch noch einige Worte zu den Zeichen zu verlieren.
Der von XML verwendete Zeichensatz ist ISO/IEC 10646. Vorausgesetzt, die eingesetzten Programme beherrschen diesen Zeichensatz, dann gibt es bezüglich der erlaubten Zeichen wohl keine Probleme mehr. Insbesondere die westlichen Sprachen sind abgedeckt, was für deutsche Texte heißt, sie können inklusive aller SonderzeichenSonderzeichen:deutscheUmlaute:Eingeben von Umlauten direkt eingegeben werden.
Es ist zwar schön, dass man alle Zeichen verwenden
kann, die man auf seiner Tastatur findet, aber es gibt
noch ein paar
Zeichen, die auf einer gewöhnlichen
Tastatur nicht vorhanden sind. Diese können Sie in Form einer
so genannten Zeichenreferenz (Character
Entity ReferenceCharacter Entity)
schreiben. Dahinter verbirgt sich einfach die Nummer (in
dezimaler Notation) des
Zeichens im Zeichensatz. Diese Nummer wird zwischen
&# und ; eingeschlossen. Falls Sie
die hexadezimale Notation von Zahlen vorziehen, so schließen
Sie diese Zahl zwischen &#x und ;
einWenn Sie nicht wissen, was eine hexadezimale
Darstellung ist, ignorieren Sie diese Bemerkung, und verwenden Sie
einfach
normale
Zahlen.. Das folgende
Beispiel zeigt drei verschiedene Wege, die französischen
Anführungszeichen (mit deutscher Ausrichtung der Spitzen zum
Wort hin) zu verwenden.
Er sagte: »XML ist toll!« Er sagte: »XML ist toll!« Er sagte: »XML ist toll!«
Ein weiterer Grund, Zeichen nicht direkt einzugeben,
kann darin bestehen, dass diese Zeichen in XML
eine besondere Bedeutung besitzen. Dies betrifft die spitzen Klammern,
das et-Zeichen (&), das Apostroph sowie die
Anführungszeichen. Alle genannten Zeichen sind Teil des
Markup und müssen kodiert werden. Neben der genannten
Zeichenreferenz gibt es auch noch die
Entity-Referenzen. Diese sind eine Art
Abkürzungen
für beliebige andere TexteOb's wirklich eine
Abkürzung ist, hängt natürlich von der Länge des
Textes ab, den man durch eine Entity-Referenz
ersetzt (Beispiel: Ä statt
Ä).. Entity-Referenzen
besitzen einen Namen,
der zwischen & und ; eingeschlossen
wird. Die folgenden Zeilen zeigen die Entities, die immer
verfügbar sind.
& & (et-Zeichen) < < (less than) > > (greater than) ' ' (apostrophe) " " (quotation mark)
Definitionen für eigene Entity-Referenzen kann man (auch bei Verwendung beliebiger DTDs) in der Dokumenttyp-Deklaration unterbringen und genauso verwenden wie die vordefinierten.
<?xml version="1.0"?> <!DOCTYPE buch system "buch.dtd" [ <!ENTITY titel "STUNNING - STUdie über die Neigung von ausgebildeteN Informatikern, einfache sachverhalte in umständliche formulieruNGen mit merkwürdiger klein-/großschreibweise zu fassen, um möglichst sinnlose akronyme zu erhalten."> ]> <buch> <buchtitel>&titel;</buchtitel> <absatz>Der obige Buchtitel, &titel;, ist hervorragend dazu geeignet, den Sinn von Entities zu zeigen. Denn zweimal möchte man den Satz "&titel;" sicherlich nicht schreiben.</absatz>
Falls Sie Text eingeben möchten, der wörtlich
übernommen werden soll, also ohne Ersetzung von Entity-Referenzen
o.Ä., so steht dafür der
CDATA-Abschnitt (character
data) zur Verfügung. Die Syntax können
Sie
der folgenden Abbildung entnehmen.
Als Zeichendaten sind hier wirklich alle Zeichen, also auch spitze Klammern usw., erlaubt, abgesehen natürlich von der abschließenden Kombination ]]>. Das folgende Beispiel zeigt zwei verschiedene Schreibweisen für denselben Text, zunächst unter Verwendung von Entity-Referenzen, anschließend als CDATA:
<absatz>Beispiele in einem XML-Buch k&ouml;nnte man gut in einen CDATA-Abschnitt einbetten</absatz> <![CDATA[<absatz>Beispiele in einem XML-Buch könnte man gut in einen CDATA-Abschnitt einbetten</absatz>]]>