Hallo
Ich muss vorausschicken, dass ich gerade erst anfange, mich mit dem XML stuff zu beschaeftigen. Steht also nicht so auf sicheren Beinen, was jetzt folgt.
Laut aktueller XML-1.0-Recommendation sind (Parameter-)Entity-Referenzen als Attribut-Wert verboten bzw. werden nicht erkannt. Erlaubt ist einzig das Auftreten von nicht-analysierten Entities als Attributwert.
Was ist "nicht-analysiert"? Meinst Du "unparsed"? Eine Uebersetzung dieser Begriffe ins Deutsche halte ich fuer ausserordentlich verwirrend und unzweckmaessig. (Verwirrend sind die vielen Begriffe ohnehin schon.)
Halten wir fest, dass Du "*als* Attributwert verboten" schreibst, jedoch nicht "*im* Attributwert".
Ich habe eine XML-Datei mit folgendem Codschnipsel:
<cd>
<logo quelle=&logo;>
</cd>
und in der DTD:
<!ENTITY logo "../xml/bilder/logo.gif">Eigentlich mache ich aber doch nichts anderes als eine Entity-Referenz im Attributwert einsetzen, etwas laut XML-Spezifikation Verbotenes. Egal denkt man sich, Hauptsache es funzt, schließlich nicht zum ersten mal, dass sich keiner um die Normen kümmert.
Verboten ist hier zuerst mal, dass Du den Attributwert nicht in Anfuehrungszeichen " oder ' gesetzt hast. Mein XML-Parser (Expat; verwendet vom Perl-Modul XML::Parser) meckert dies auch gleich an. Desweiteren ist das logo-Tag nicht geschlossen.
Schreibst Du also
<logo quelle="&logo;" />
ist alles in Ordnung. Hier findet sich die Entity reference dann ja auch *im* Attributwert, was alles andere als verboten ist. *Als* Attributwert geht ja eigentlich nicht so recht, denn dann muesste man es ja ohne Anfuehrungszeichen schreiben, was schon wieder nicht wellformed ist.
Zu dem Rest mit der External Entity kann ich nichts sagen, soweit bin ich noch nicht in der Spec. ;-)
So lange