Allgemeine Entity-Deklarationen

(Auszug aus "XML in a Nutshell" von Elliotte Rusty Harold & W. Scott Means)

Wie Sie auf der Seite Referenzen erfahren haben, definiert XML fünf Entities für Sie vor:

<

das Kleiner-als-Zeichen, also die öffnende spitze Klammer (<)

&amp;

das Ampersand (&)

&gt;

das Größer-als-Zeichen, also die schließende spitze Klammer (>)

&quot;

gerade doppelte Anführungszeichen (")

&apos;

den Apostroph, also das einzelne Anführungszeichen (')

Eine DTD kann jedoch viele weitere Entities definieren. Das ist nicht nur in gültigen Dokumenten nützlich, sondern sogar in solchen, die Sie nicht validieren wollen.

Entity-Referenzen werden mit der Deklaration ENTITY in der DTD deklariert. Diese Deklaration gibt den Namen des Entitys, bei dem es sich um einen XML-Namen handeln muss, sowie den Ersetzungstext des Entitys an. Diese Deklaration z. B. definiert &super; als Abkürzung für superkalifragilistischexpiallegorisch:

 

<!ENTITY super "superkalifragilistischexpiallegorisch">

Ist das einmal gemacht, können Sie &super; überall dort einsetzen, wo Sie normalerweise das ganze Wort eintippen (und möglicherweise falsch schreiben) würden.

Entities können sowohl Markup als auch Text enthalten. Diese Deklaration beispielsweise definiert &footer; als Abkürzung für eine Standard-Webseiten-Fußzeile, die auf vielen Seiten wiederholt werden wird:

<!ENTITY footer '<hr size="1" noshade="true"/>
<font CLASS="footer">
<a href="index.html">O&apos;Reilly Home</a> |
<a href="sales/bookstores/">O&apos;Reilly Bookstores</a> |
<a href="order_new/">How to Order</a> |
<a href="oreilly/contact.html">O&apos;Reilly Contacts</a><br>
<a href="http://international.oreilly.com/">International</a> |
<a href="oreilly/about.html">About O&apos;Reilly</a> |
<a href="affiliates.html">Affiliated Companies</a>
</font>
<p>
<font CLASS="copy">Copyright 2004, O&apos;Reilly Media, Inc.<br/><a href="mailto:webmaster@oreilly.com">webmaster@oreilly.com</a></font>
</p>
'>

Der Ersetzungstext des Entitys muss wohlgeformt sein. Zum Beispiel können Sie nicht ein Start-Tag in ein Entity platzieren und das dazugehörende End-Tag in ein anderes. Sie müssen außerdem aufpassen, dass Sie innerhalb des Ersetzungstextes Anführungszeichen benutzen, die sich von denen unterscheiden, die ihn abtrennen. Wir haben hier zum Einschließen des Ersetzungstextes einfache Anführungszeichen und innerhalb doppelte Anführungszeichen verwendet. Allerdings mussten wir das einzelne Anführungszeichen in »O'Reilly« auf die vordefinierte allgemeine Entity-Referenz &apos; setzen. Der Ersetzungstext kann selbst Entity-Referenzen enthalten, die aufgelöst werden, bevor der Text ersetzt wird. Selbstreferenzierende und zirkulare Referenzen sind jedoch verboten. Allgemeine Entities fügen Ersetzungstext in den Hauptteil eines XML-Dokuments ein. Sie können innerhalb einer DTD auch an Stellen verwendet werden, von denen sie dann schließlich in den Hauptteil des XML-Dokuments gelangen, zum Beispiel als Attribut-Default-Wert oder im Ersetzungstext eines anderen Entitys. Sie dürfen jedoch nicht dazu benutzt werden, um den Text der DTD selbst anzugeben. Diese Deklaration ist zum Beispiel nicht erlaubt:

<!ENTITY koordinate "((x, y) | (y, x) | (θ, r) | (r, θ))" >
<!ELEMENT polygon (&koordinate;, &koordinate;, &koordinate;+)>

Wir werden gleich sehen, wie eine andere Art von Entity, das Parameter-Entity, dazu eingesetzt werden kann, das hier gewünschte Ergebnis zu erzielen.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

  


Copyright © 2005 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XML in a Nutshell" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de