Parameter-Entity-Referenzen | |
%name; Trifft ein XML-Parser in der DTD eines Dokuments auf eine Parameter-Entity, ersetzt er die Referenz durch den Text der Entity. Unabhängig davon, ob der Ersetzungstext als Literal oder aus einer externen Entity eingefügt wird, der Parser fährt mit der Analyse des Ersetzungstexts fort als ob er immer Teil des Dokuments gewesen wäre. Diese Analyse hat interessante Auswirkungen auf verschachtelte Entity-Referenzen: <!ENTITY % YEAR "2001"> <!ENTITY COPYRIGHT "© %YEAR;"> . . . <copyright_notice>©RIGHT;</copyright_notice> Nachdem die erforderlichen Entity-Ersetzungen vorgenommen wurden, wäre das Ergebnis des obigen Beispiels das folgende vorschriftsmäßige Element: <copyright_notice>© 2001</copyright_notice> Wie XML Parameter-Entity-Referenzen behandelt, hängt davon ab, wo in der DTD sie vorkommen. Referenzen innerhalb des Literalwerts einer Entity-Deklaration (wie etwa Copyright © %YEAR;) sind nur als Teil der externen Teilmenge zulässig. Innerhalb der internen Teilmenge dürfen Parameter-Entity-Referenzen nur dort vorkommen, wo auch eine vollständige Markup-Deklaration stehen könnte. Anders ausgedrückt: innerhalb der internen Teilmenge können Parameterreferenzen nur verwendet werden, um vollständige Markup-Deklarationen einzubinden. Parameter-Entity-Referenzen werden nur innerhalb der DTD erkannt. Daher hat das Zeichen % keine Signifikanz für die Zeichendaten und muss nicht als Zeichenreferenz angegeben werden. |