Entities werden auf folgende Weise deklariert:
Entity-Deklarationen | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Der Name bezeichnet das Entity in einer Entity-Referenz oder, im Falle eines nicht-analysierten Entity, im Wert eines ENTITY- oder ENTITIES-Attributs. Wenn dasselbe Entity mehr als einmal deklariert wird, ist die erste Deklaration verbindlich. Benutzeroptional kann ein XML-Prozessor eine Warnung ausgeben, wenn Entities mehrfach deklariert sind.
Wenn die Entity-Definition ein EntityValue ist, wird das definierte Entity internes Entity genannt. Es gibt keine separate Speicherungseinheit, der Inhalt des Entity ist in der Deklaration angegeben. Beachten Sie, dass eine gewisse Verarbeitung von Entity- und Zeichenreferenzen im literalen Entity-Wert notwendig sein kann, um den korrekten Ersetzungstext zu erzeugen; siehe A.4.5.
Ein internes Entity ist ein analysiertes (parsed) Entity.
Ein Beispiel für eine interne Entity-Deklaration:
<!ENTITY Pub-Status "Dies ist eine Vorabveröffentlichung dieser Spezifikation">
Ein Entity, das nicht intern ist, ist ein externes Entity, das folgendermaßen deklariert wird:
Deklaration von Externen Entities | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Wenn NDataDecl vorhanden ist, handelt es sich um ein allgemeines nicht-analysiertes Entity, sonst ist es ein analysiertes Entity.
Gültigkeitsbeschränkung: Deklarierte
Notation
Der Name muss mit dem
deklarierten Namen einer Notation übereinstimmen.
Das SystemLiteral wird der System-Identifier des Entity genannt. Es handelt sich um einen URI, der dazu benutzt werden kann, das Entity aufzufinden. Beachten Sie, dass das Hash-Zeichen (#) und das bei URIs häufig benutzte Identifier-Fragment kein formaler Bestandteil des URIs selbst sind. Ein XML-Prozessor kann einen Fehler anzeigen, wenn ein Identifier-Fragment als Teil eines System-Identifier angegeben wird. Soweit keine Informationen, die außerhalb des Rahmens dieser Spezifikation liegen, etwas anders aussagen (z.B. ein besonderes XML-Element, das von einer bestimmten DTD definiert wird, oder eine Processing Instruction, die durch eine bestimmte Anwendungsspezifikation definiert wird), beziehen sich relative URIs auf die Adresse der Quelle, in der die Entity-Deklaration steht. Ein URI kann damit relativ zum Dokument-Entity, zum Entity, das die externe DTD-Teilmenge enthält, oder zu irgendeinem anderen externen Parameter-Entity sein.
Ein XML-Prozessor sollte ein Nicht-ASCII-Zeichen in einem URI in folgender Weise behandeln:
Zusätzlich zu einen System-Identifier darf ein externer Identifier auch einen Public-Identifier enthalten. Ein XML-Prozessor, der versucht, den Inhalt des Entity zu laden, kann den Public-Identifier verwenden, um einen alternativen URI zu erzeugen. Falls der Prozessor dazu nicht in der Lage ist, muss er den als System-Identifier angegebenen URI verwenden. Vor der Abbildung des Public-Identifier auf einen System-Identifier müssen alle Folgen von Leerraum (White Space) auf ein einzelnes Leerzeichen (#x20) normalisiert und führende sowie abschließende Leerzeichen entfernt werden.
Beispiele für Deklarationen von externen Entities:
<!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/OpenHatch.xml"> <!ENTITY open-hatch PUBLIC "-//Textuality//TEXT Standard open-hatch boilerplate//EN" "http://www.textuality.com/boilerplate/OpenHatch.xml"> <!ENTITY hatch-pic SYSTEM "../grafix/OpenHatch.gif" NDATA gif >