 |
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 < 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 & 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.
|
 |
|
|
Sie wollen diese Seite ausdrucken? Dafür haben wir eine spezielle Druckversion ohne grafische Elemente entwickelt! |
|
|
Einführung in CSS bei HTMLWorld.
|
|