Dieser Anhang enthält einige Beispiele, die die Abfolge der Erkennung und Expansion von Entity- und Zeichenreferenzen, wie in A.4.4 beschrieben, illustrieren.
Wenn die DTD folgende Deklaration enthält
<!ENTITY beispiel "<p>Ein et-Zeichen (&#38;) kann numerisch (&#38;#38;) oder mit einem allgemeinen Entity (&amp;) geschützt werden.</p>" >
dann wird der XML-Prozessor die
Zeichenreferenzen erkennen, sobald er die Entity-Deklaration
analysiert, und wird sie auflösen, um schließlich folgende
Zeichenkette als den Wert des Entity
beispiel
zu speichern:
<p>Ein et-Zeichen (&) kann numerisch (&#38;) oder mit einem allgemeinen Entity (&amp;) geschützt werden.</p>
Eine Referenz auf &beispiel;
im Dokument verursacht eine erneute Analyse, in der die
Start- und End-Tags des p
-Elements erkannt und die
drei Referenzen erkannt und expandiert werden. Das Ergebnis
ist ein p
-Element mit folgendem Inhalt (alles
Zeichendaten, keine Begrenzungen oder Markup):
Ein et-Zeichen (&) kann numerisch (&) oder mit einem allgemeinen Entity (&) geschützt werden.
Ein komplexeres Beispiel wird die Regeln und ihre Auswirkungen vollständig illustrieren. Im folgenden Beispiel dienen die Zeilennummern einzig zur Referenzierung:
1 <?xml version='1.0'?> 2 <!DOCTYPE test [ 3 <!ELEMENT test (#PCDATA) > 4 <!ENTITY % xx '%zz;'> 5 <!ENTITY % zz '<!ENTITY trickreiche "fehler-anfällig" >' > 6 %xx; 7 ]> 8 <test>Dieses Beispiel zeigt eine &trickreiche; Methode.</test>
Dieses führt zu Folgendem:
xxwird in der Symboltabelle mit dem Wert
%zz;abgelegt. Da der Ersetzungstext nicht noch einmal analysiert wird, wird die Referenz auf das Parameter-Entity
zznicht erkannt. (Und das wäre auch ein Fehler, denn
zzist noch nicht deklariert.)
<sofort expandiert, und das Parameter-Entity
zzwird mit dem Ersetzungstext
<!ENTITY trickreiche "fehler-anfällige" >abgelegt, was eine wohlgeformte Entity-Deklaration ist.
xxerkannt, und der Ersetzungstext von
xx, nämlich
%zz;, wird analysiert. Die Referenz auf
zzwird seinerseits erkannt und dessen Ersetzungstext (
<!ENTITY trickreiche "fehler-anfällige" >) wird analysiert. Das allgemeine Entity
trickreichewurde nun mit dem Ersetzungstext
fehler-anfälligedeklariert.
trickreicheerkannt und expandiert, so dass der volle Inhalt des Elementes
testnun die folgende selbstbeschreibende (und grammatikalisch falsche) Zeichenkette ist:
Dieses Beispiel zeigt eine fehler-anfällig Methode.