XML -Entitätsreferenzen
>721453 Bedeutung des Wortes „Entität“ in der Philosophie oder im allgemeinen außerhalb von XML
Entitäten
Ein XML -Dokument besteht aus Speicherungseinheiten (wie beispielsweise Dateien), die als Entitäten bezeichnet werden. In dieser Lektion geht es hauptsächlich um eine bestimmte Art von Referenz auf Entitäten. Damit aber der Begriff „Entität“ (entity ) richtig eingeordnet werden kann, wird zunächst ein Überblick über alle möglichen Arten von Entitäten gegeben.
Unbenannte und benannte Entitäten
Es gibt unbenannte und benannte Entitäten:
- Die Dokumententität : Sie ist die Entität, welche als Wurzel für die Speicherung eines XML -Dokuments dient. Der Ausdruck „Wurzel“ soll dabei aussagen, daß diese Entität das XML -Dokument nicht vollständig enthalten muß, sondern auch Verweise auf andere Entitäten enthalten kann, die Teile des XML -Dokuments enthalten und die ein XML -Analysator während der Analyse einlesen muß. Im einfachsten Fall kann eine Dokumententität einfach ein XML -Dokument speichern. Eine Datei mit einem XML -Dokument ist also ein Beispiel einer Dokumententität. Falls eine Dokumententität eine Datei ist, kann sie als Datei auch einen Dateinamen haben, dennoch ist sie als Entität immer unbenannt (sie hat keinen Entitätsnamen) Die externe DTD-Teilmenge ist ein bestimmter Teil der Deklaration eines Dokumenttyps und ist ebenfalls eine Entität ohne Entitätsnamen.
- Eine benannte Entität wird durch eine Entitätsdeklaration eingeführt, die einer bestimmten Entität einen Namen gibt.
Externe und interne Entitäten
Eine Entität kann intern oder extern sein.
- Wenn bei einer Entitätsdeklaration die Entität als Teil der Deklaration angegeben wird, handelt es sich um die Deklaration einer internen Entität. Es handelt sich dabei immer um eine analysierte Entität, sie besteht also aus Ersatzzeichen. Die Deklaration einer internen Entität ist Teil der sie enthaltenden Entität, insofern existiert eine interne Entität immer in Abhängigkeit von der sie enthaltenden externen Entität.
- Alle anderen Entitäten sind externe Entitäten. Sie existieren als Speichereinheiten (Entitäten) außerhalb der ihre Deklaration enthaltenden Entität und unabhängig von dieser. Eine Datei kann beispielsweise als eine externe Entität auftreten, während eine interne Entität als Teil einer Datei vorkommen kann.
Allgemeinentitäten und Parameterentitäten
Schließlich wird noch zwischen Allgemeinentitäten (general entities ) und Parameterentitäten (parameter entities ) unterschieden. Beides sind benannte Entitäten. Die Bedeutung einer Allgemeinentität oder einer Parameterentität wird durch eine Deklaration festgelegt. (Solch eine Deklaration ist selber Teil einer anderen Entität, wie einer Dokumententität oder einer externen DTD-Teilmenge.) Bei der Verwendung einer solchen Entität steht ihr Name dann für die an anderer Stelle festgelegte Bedeutung.
- Eine Allgemeinentität (allgemeine Entität, general entity ) ist zur Verwendung (Referenzierung) im Inhalt eines XML -Dokuments gedacht. Dementsprechend sind Allgemeinentitäten für Autoren eines XML -Dokuments besonders wichtig und werden im Rest dieser Lektion behandelt.
- Parameterentitäten (parameter entity ) können in Dokumenttypdefinition verwendet werden. Sie werden in dieser Lektion nicht weiter behandelt, da es in dieser Lektion nicht um das Erstellen von Dokumenttypdefinitionen geht.
- Entitäten, die weder Allgemeinentitäten noch Parameterentitäten sind kommen in XML auch vor, es sind Entitäten, die nicht durch eine Deklaration gegeben sind.
Da Allgemeinentitäten besonders häufig vorkommen werden sie gelegentlich auch einfach nur Entitäten genannt, wenn dabei keine Verwechslungen mit anderen Arten von Entitäten möglich sind.
Referenzen auf analysierte Allgemeinentitäten
Durch die Verwendung des Namens einer Allgemeinentität kann an den Stellen eines Dokuments, an denen auch eine Zeichenreferenz stehen kann, ein Bezug auf die Allgemeinentität mit diesem Namen notiert werden. Dabei wird direkt vor den Namen ein kaufmännisches Und-Zeichen "&" geschrieben und direkt danach ein Semikolon ";".
- 〈EntityRef 〉 ::=
- '&' 〈Name 〉 ';'.
Ein Bezug auf eine Allgemeinentität wird durch einen XML -Prozessor in den meisten Fällen dadurch verarbeitet, daß die Entität an der Stelle des Bezugs eingefügt wird. Wenn die Allgemeinentität mit dem Namen "u" den Wert "x" hat, dann wird in dem Quelltext "w&u;y" der Bezug "&u;" durch den Wert "x" ersetzt und dann der Ersatztext "wxy" weiterverarbeitet.
Ersetzen eines Allgemeinentitaetsbezugs (Beispiel)
.---------------------. XML-Prozessor .-------------------.
| Quelltext "&u;" |---------------->| Ersatztext "x" |
'---------------------' '-------------------'
Welche Allgemeinentitäten tatsächlich deklariert sind, hängt vom Typ des XML -Dokuments ab.
Fünf vordefinierte Allgemeinentitäten
Fünf Allgemeinentitäten stehen in XML immer zur Verfügung, weil sie bereits durch XML vordefiniert sind.
Namen und Bedeutung vordefinierter Allgemeinentitaeten
"Name", "Bedeutung":
"lt", "Kleiner-Als-Zeichen".
"gt", "Groesser-Als-Zeichen".
"amp", "kaufmaennisches Und-Zeichen".
"apos", "Hochkomma (Apostroph)".
"quot", "Anfuehrungszeichen (Gaensefueschen)".
So kann anstelle eines Größer-Zeichens in Text in vielen Fällen die Entitätsreferenz ">" geschrieben oder auch die Zeichenreferenz ">" verwendet werden.
Schreibweisen des Anfuehrungszeichens
.---------------------.
| Quelltext ">" |-----.
'---------------------' |
|
.---------------------. | XML-Prozessor .-------------------.
| Quelltext ">" |-----+------------------->| Ersatztext ">" |
'---------------------' | '-------------------'
|
.---------------------. |
| Quelltext ">" |-----'
'---------------------'
Ein Satz mit Anführungszeichen kann im Quelltext eines XML -Dokuments also auf verschiedene Weise geschrieben werden.
Ein Satz mit Anfuehrungszeichen
Er sagte, "Hallo!".
Er sagte, "Hallo!".
Er sagte, "Hallo!".
Die Verwendung der vordefinierten Entitätsreferenzen ist vor allem in den Fällen naheliegend, in denen ein Zeichen nicht direkt geschrieben werden kann, weil es an dieser Stelle eine unerwünschte Sonderbedeutung hätte. Wenn diese Sonderbedeutung nur durch das im Quelltext geschriebene Zeichen notiert werden kann, dann kann sie durch Verwendung einer Entitätsreferenz oder einer Zeichenreferenz vermieden werden. Die benannten Entitätsreferenzen sind besser lesbar und leicht zu merken als die numerischen Zeichenreferenzen.
Allgemeinentitäten eines Dokumenttyps
Ein bestimmter Dokumenttyp kann weitere Namen für Allgemeinentitäten festlegen. So definiert XHTML 1.0 beispielsweise die Allgemeinentität "times" für das Multiplikationszeichen "·", das auch mit der Zeichenreferenz "×" notiert werden kann.
Die Festlegung von Namen für Allgemeinentitäten in Dokumenttypen wird aber vielleicht für XML zukünftig eine geringere Rolle spielen. Deswegen kann erwogen werden, Allgemeinentitäten nur zurückhaltend zu verwenden.
Deklaration von Allgemeinentitäten
Bei der Verwendung eines vorgegebenen Dokumenttyps können Allgemeinentitäten nicht deklariert (also nicht festgelegt) werden, da ihre Deklaration Bestandteil der Dokumenttypdeklaration ist. Daher wird die Deklaration von Allgemeinentitäten in dieser Lektion nicht behandelt.
Zusammenfassung
Ein XML-Prozessor ersetzt eine Allgemeinentitätsreferenz der Form '&' 〈Name 〉 ';' in der Regel durch den Wert der Allgemeinentität mit dem Namen 〈Name 〉, falls eine Allgemeinentität mit diesem Namen von XML oder der verwendeten Dokumenttypdeklaration festgelegt wurde.