Hallo Franz!
Jetzt versuche ich auch die anderen Postings zu miteinbeziehen.
und in der DTD:
<!ENTITY logo "../xml/bilder/logo.gif">
Das Problem damit, daß es sich hier da es eine URI ist, um einen externen Entity handelt.
Demnach müsste es aber (wie du auch schreibst) so definert werden:
<!ENTITY logo SYSTEM "../xml/bilder/logo.gif" NDATA gif> (gif kleingeschreiben)
Dazu sollte die NOTATION so aussehen (es ist hier nur theoretischg, denn ich nicht weiss wie Unisys/Copuserve das behandelt) :
<!NOTATION gif PUBLIC "-//CompuServe//NOTATION Unisys Graphics Format//EN">
Eigentlich mache ich aber doch nichts anderes als eine Entity-Referenz im Attributwert einsetzen, etwas laut XML-Spezifikation Verbotenes.
Das ist nicht ganz richtg.
<q>Reference in Attribute Value as a reference within either the value of an attribute in a start-tag, or a default value in an attribute declaration; corresponds to the nonterminal AttValue.</q>
Es kann also so aussehen:
<logo scr='&home;/bilg.gif'>
Verboten ist es nur bei unparsed Entities als "a reference to an external entity in an attribute value.". Also genau das was du haben möchtest.
=======dein posting====
korrekt, aber in meinem anderen Posting, hab ich geschrieben, dass ich mich vertan habe. Ist eben gar keine externe Entität auf die referenziert wird, sondern ne interne (vgl. http://www.w3.org/TR/REC-xml#sec-internal-ent)
erst mit
<!NOTATION GIF PUBLIC "CompuServe/Unisys Graphics Format">
<!ENTITY logo SYSTEM "../xml/bilder/logo.gif" NDATA GIF>
Nein. Denn eine "internal entity is a parsed entity" und "There is no separate physical storage object".
Hier <!ENTITY logo "../xml/bilder/logo.gif"> definerst du im Grunde nur einen 'repalcement text' für 'logo'.
Es ist eine andere (gute) Frage ob und wie xml-parser das behandeln.
Machs ichs nun aber wie's laut XML-Spezifikation richtig wäre, nämlich, die Entity als nicht-analysierte Definieren und dann _als_ Attributwert auftreten lassen, geht es nicht mehr.
Soll heißen: Der MSIE zeigt das Bild nicht an und die XML-Parser motzen und machen erst gar keine Verarbeitung mehr(was mich eigentlich mehr besorgt ;-):
Es könnte wie oben geschrieben an deine NOTATION liegen. Aber was bemängeln die Parser?
Kennt jemand eine korrekte Lösung
Aber wie bitte tritt eine unparsed Entity, also z.B. ein GIF-Bild in einem Attribut auf? Mir völlig unklar.
Du kannt im ENTITY einiges machen so z.B. folgendes:
<!ELEMENT img - O EMPTY >
<!ATTLIST img
src %URI; #REQUIRED
(wobei ich das jetzt aus dem html dtd für img geholt habe)
<!ENTITY logo
"<img src="bild.gif" />"
Wobei das hier SGML-mäßig ok ist, weiss ich nicht wie es von Parser ausgeführt wird.
Grüße
Thomas