Thomas J.S.: Entity-Referenz bzw. -Auftreten in/als Attributwert

Beitrag lesen

Hallo Franz!

Auf die Gefahr hin, dass es langsam etwas verwirrend wird mit den Begrifflichkeiten ;-)

Ist gut so, so können wir alle dazulernen.

<!ENTITY logo "../xml/bilder/logo.gif">
ist eine interne *geparste* Entität (trotz URI-Angabe). Der Text in Anführungszeichen wird eingesetzt für die Entity-Referenz &logo; (also nur ein Replacement-Text!).

So verstehe ich auch.

Referenzen auf interne Entities in Attributwerten ("Reference in Attribute Value") sind in Anführungszeichen laut XML-1.0-Recommendation erlaubt.
Klappt problemlos, kein Parser motzt und das Bild wird auch angezeigt mit entsprechendem Style-Sheet.

Dann mache es so. ;-)

Eine Referenz auf eine externe *unparsed* Entity ist laut XML-1.0-Recommendation  nur *als* Attributwert erlaubt ("Occurence as Attribute Value").

Ne. (wenn wir annehemn daß: Attributwert = attribute value)
Punkt 3.1
"Well-Formedness Constraint: No External Entity References.
Attribute values cannot contain direct or indirect entity references to external entities"

Was Entities angeht Punkt 4.1:(es geht hier also um eine ENTITY nicht um ELEMENT.)
"Well-Formedness Constraint: Parsed Entity.
An entity reference must not contain the name of an unparsed entity.
Unparsed entities may be referred to only in attribute values declared to be of type ENTITY or ENTITIES"

Im Klartext, folgendes geht nicht:
<!ENTITY logo SYSTEM 'bild.gif' NDATA gif>
...
<div>Dir Firma: &logo; ist ...</div>
Da somit mitunter binary-Daten mittem im Text auftauchen würden.

Deswegen muss es wie im Punkt 3.3.1 sein, wo wir wieder beim ELEMENT sind.:
"Validity Constraint: Entity Name.
Values of type ENTITY must match the Name production, values of type ENTITIES must match Names; each Name must match the name of an unparsed entity declared in the DTD."

Im Klartext (wie du auch schreibst):
<!NOTATION gif  PUBLIC "blalabla">
<!ENTITY logo SYSTEM "http://www.domain.de/bild.gif" NDATA gif>
<!ATTLIST Wir src ENTITY #REQUIRED>
...
<Wir src="Antarctica">

Das ganze ist doch irgendwie verwirrend ,alles schön wiedersprüchlich. Mir scheint das Problem bei den verschiedenen Möglichkeiten für Entities zu liegen:
Internal parsed general / Internal parsed parameter / External parsed general / External parsed parameter / External unparsed general
Na ja... eines Tages werden wir schlau genug alles rauszufinden.

Ich konnte jetzt nichts ausprobiren, da ich gerade den Rechner putze und alles mögliche lösche, u.a. alle die kleinen xml-programme. ;-)

Grüße
Thomas