Analysierbare allgemeine Entities | |
<!ENTITY name "Replacement text."> <!ENTITY name SYSTEM "system-literal"> <!ENTITY name PUBLIC "pubid-literal" "system-literal"> Analysierbare allgemeine Entities werden innerhalb der Dokumententypdefinition deklariert, danach kann im Dokumenttext oder im Wert von Attributen darauf verwiesen werden. Wenn das Dokument vom Parser analysiert wird, wird der Ersetzungstext anstelle der Entity-Referenz eingebunden. Dann nimmt der Parser die Analyse wieder auf, und zwar beginnend mit dem Text, der gerade ersetzt worden ist. Analysierbare allgemeine Entities werden in der DTD deklariert, mit Hilfe einer Obermenge der für die Deklaration von Parameter-Entities verwendeten Syntax. Interne Entities speichern den Ersetzungstext als Literal-String in der Zeile. Der Ersetzungstext innerhalb einer internen Entity wird vollständig in die Entity-Deklaration eingebunden, so dass für den Ersetzungstext keine externe Datei benötigt wird. Diese Situation ist stark verwandt mit den Makrofunktionen für die String-Ersetzung vieler gängiger Programmiersprachen: <!ENTITY name "Replacement text"> Wenn auf eine analysierbare allgemeine Entity verwiesen wird, wird der Inhalt der externen Entity ins Dokument eingebunden und der XML-Parser setzt die Analyse fort, beginnend beim neu eingebundenen Text. Gemäß der XML-Empfehlung sind zwei Arten allgemeiner Entities erlaubt: analysierbare und nicht analysierbare. Für die Deklaration einer nicht analysierbare Entity wird dieselbe Syntax verwendet wie für eine allgemeine analysierbare externe Entity, allerdings wird zusätzlich ein XML-Notationsname in die Deklaration eingefügt: <!ENTITY name SYSTEM "system-literal" notation-name> <!ENTITY name PUBLIC "pubid-literal" "system-literal" notation-name> Auf nicht analysierbare allgemeine Entities wird nicht mit Hilfe der Syntax &name; verwiesen. Um auf eine nicht analysierbare externe Entity zu verweisen, muss der Attributtyp ENTITY oder ENTITIES verwendet werden. Der Mechanismus nicht analysierbarer externer allgemeiner Entities ist ein XML-Feature, das schlecht verstanden, ja schlecht unterstützt wird und in der Praxis selten angewandt wird. Es empfiehlt sich, für den Verweis auf externe Nicht-XML-Daten alternative Mechanismen (wie XLinks oder einfache URI-Strings zu verwenden). |