Platzhalter

 
Platzhalter PlatzhalterPlatzhalter

XML-Tutorial II: Entities

Platzhalter
 
  Startseite
  eBook-Projekt
  Web-Lexikon
  Bücher bestellen
   
  Design-Theorie
  Design-Praxis
  Promotion
  HTML/XML-Praxis
  Projekt-Management
  Webmaster-Praxis
  Fragen & Antworten
  Technik-Ecke
   
  Portal/Links
  Buch-Rezensionen
  Software
  Impressum
PlatzhalterPlatzhalter







 

Platzhalter Entities sind Platzhalter für Inhalte. Beim Verarbeiten des Dokuments werden sie also durch etwas anderes ersetzt, und daher sind sie durchaus mit SSI vergleichbar. Natürlich ist es auch möglich, Entities zu verschachteln, sogar externe Dateien lassen sich mit ihnen einbinden. Wie das alles funktioniert, werden wir im Folgenden erklären.

Hallo Entity


Sehen Sie sich diesen Code an:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE inhalt
[
    <!ENTITY test "Test-String <a>test</a>">
]>
<inhalt>
&test;
</inhalt>


Unten wird mit &test; auf ein Entity zugegriffen. Diese Form wird immer wieder verwendet: der Name des Entities wird umschlossen von einem Und-Zeichen und dem Semikolon. Beim Parsen des Dokuments wird dieses Konstrukt dann durch den Wert des Entities ersetzt. Der neu eingesetzte Code wird dann wiederum vom Parser verarbeitet.

Konsequenz: Entities können verschachtelt sein und Entity-Werte müssen wohlgeformt sein!

Folgendes Beispiel zeigt eine Verschachtelung:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE inhalt
[
    <!ENTITY test "Test-String &test2;">
    <!ENTITY test2 " Test-String2">    
]>
<inhalt>
&test;
</inhalt>


Entity-Werte


Wenn Sie das vorhergehende Beispiel gelesen haben, wissen Sie vermutlich schon, wo Entity-Werte festgelegt werden: im Abschnitt zwischen <!DOCTYPE abc und ]>.

Diese beiden Code-Stücke markieren Anfang und Ende einer Inline-DTD-Deklaration. DTD heißt "Document Type Declaration" und gibt an, wie Ihr Dokument aufgebaut sein darf. In unserem Beispiel sind die Entity-Deklarationen der einzige Teil der DTD. In einem späteren Teil des Tutorials werden wir uns dann noch einmal separat mit dem Thema DTD beschäftigen.

Merken wir uns also vorerst, dass Entities innerhalb einer DTD stehen müssen.

Entity-Deklaration selbst verlaufen nach einem einfachen Schema:
<!ENTITY entity-name "entity-wert">

So angelegte Entities werden dann als "interne Entities" bezeichnet.

Zwischen den Anführungszeichen darf so ziemlicher jeder erlaubte Code stehen, also auch Tags, Entity-Verweise etc. Problematisch wird es nur, wenn Sie hier Anführungszeichen verwenden wollen, z.B. für einen Attribut-Wert: in so einem Fall tun es auch die einfachen Anführungszeichen (attribut='wert').

Externe Entities: Dateien einbinden


Von der Festplatte...


Um eine externe Datei als Entity einzubinden, verwenden Sie folgende Syntax:
<!ENTITY entity-name SYSTEM "ortsangabe">

So würde also beispielsweise die Datei test.xml (gleiches Verzeichnis) eingebunden:
<!ENTITY test SYSTEM "test2.xml">

Aus dem Internet...


Sie können auch Dateien aus dem Internet laden:
<!ENTITY test SYSTEM "http://www.aboutwebdesign.de/gibt-es-nicht.xml">

Bitte beachten Sie, dass die so eingebundenen Dateien keine neuen XML-Dokumente darstellen. Sie dürften also keine XML-Typdeklarationen, neue DTDs, Prologe oder Ähnliches enthalten.

Aus dem Internet II...


Es gibt noch eine andere Methode, Dateien anzugeben: mit dem sogenannten "Public Identifier". Das könnte dann so aussehen:
<!ENTITY test PUBLIC "-//AWD/FILE gibtsgarnicht//DE" "http://www.aboutwebdesign.de/gibt-es-nicht.xml">

Vor der konkreten URL steht also noch eine zweite Datei-Spezifikation: eine beschreibende Angabe. Eigentlich sollte der Parser solche Public Identifier in einem Katalog nachschlagen. Das hat viele Vorteile, funktioniert aber leider noch nicht in der Praxis.

Seltsame Entities


Parameter-Entities


Es gibt noch andere Typen von Entities: Parameter-Entities. Unser Artikel hat sich im Gegensatz dazu mit allgemeinen Entities beschäftigt. Parameter-Entities sind jedoch ein zu komplexes Thema, als dass wir es hier behandeln können. Eventuell greifen wir sie in einer späteren Folge noch einmal auf.

Nicht-geparste Entities


Am Anfang dieses Tutorials fand sich die Aussage, dass Entities selbst wiederum geparst werden. Es gibt Möglichkeiten, das zu verhindern: verwenden Sie einfach das Schlüsselwort NDATA. So können z.B. Video-Dateien direkt eingebunden werden - wenn der Parser die entsprechenden Fähigkeiten hat. Wir raten vom Einsatz der nicht-geparsten Entities generell ab und erklären sie daher auch nicht weiter.

Ein Beispiel:
<!ENTITY test SYSTEM "movie.mpeg" NDATA MPEG>

Vordefinierte Entities


Ist Ihnen schon aufgefallen, dass Konstrukte wie &lt; auch Entities sind? Das nur als Anmerkung ;-)

Einsatzmöglichkeiten von Entities


Wiederholt sich ein Fragment sehr häufig in Ihren Texten? Dann verwenden Sie doch Entities:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE inhalt
[
    <!ENTITY firma "Bruno &amp; Partner">
]>
<inhalt>
Unsere Firma &firma; steht für höchste Ansprüche an Qualität und Design. &firma; garantiert eine solide Partnerschaft und günstige Preise. Sprechen Sie uns doch deswegen an, wenn Sie Fragen haben. Um &firma; zu kontaktieren, klicken Sie hier. Mit Grüßen, Ihr &firma;-Team!
</inhalt>


Sollten Sie eine neue Firma eröffnen, ist die Erstellung der neuen Homepage auch kein Problem. Setzen Sie einfach einen anderen Entity-Wert, und schon kann die Site wieder online gehen!

Wenn Sie XHTML verwenden, könnten sich Entities sehr hilfreich erweisen - vor allem, wenn Sie wirklich auf SSI verzichten wollen. Schade ist nur, dass die aktuellen Browser in der Hinsicht ein sehr seltsames Verhalten zeigen. Wir werden ein Beispiel nachliefern, sobald die Masse der Browser auch Entities innerhalb von XHTML versteht.

Autor: Alexander Dilthey | Erstmalig veröffentlicht: 27.06.2002 | Einen Artikel schreiben?

 

Artikelreihe XML
XML-Tutorial I: Allgemeines
XML-Tutorial III: Namensräume
XML-Tutorial IV: Style Sheets
XML-Tutorial V: Dokumentenstrukturen mit DTDs validieren
XML-Tutorial VI: XLinks & XPointer
XML-Tutorial VII: Transformationen mit XSLT & XPath
Rezension: Einführung in XML

Neue Artikel

Rezension: Entwurfsmuster von Kopf bis Fuß
Rezension: Webdesign mit CSS
AJAX - XML und JavaScript in Schönheit vereint?
Rich Email - Flash im Newsletter
Screen Reader Usability
Comment Spam und CAPTCHAs
Logfile-Analyse selbst gemacht - ein Perl-Beispiel

Partnerprogramm




Kommentar

Ist die Freiheit der Informationsgesellschaft in Gefahr?
Derzeit leben wir in einer relativ freien Welt. Doch sind derzeit Tendenzen erkennbar, die Freiheit des Individuums den Interessen der Großindustrie zu opfern. Ein Kommentar.

Druckversion
Sie wollen diese Seite ausdrucken? Dafür haben wir eine spezielle Druckversion ohne grafische Elemente entwickelt!



Einführung in CSS bei HTMLWorld.