phpbar.de logo

Mailinglisten-Archive

AW: [php] sax parser und entities innerhalb von attributwerten

AW: [php] sax parser und entities innerhalb von attributwerten

Peter Bieling network at media-palette.de
Sam Jul 24 11:18:34 CEST 2004


Thomas Richter wrote:
>>wo hast Du die Entities definiert? Wenn Du eine externe DTD 
>>verwendest, 


> das xml dokument ist ein xhtml dokument und komplett valide (html und
> xml valide!).
> 
> nun habe ich folgendes:
> 
> <!DOCTYPE html ...>
> <?xml version="1.0" ?>
> <html>
>   <head>
>     <title>title</title>
>   </head>
>   <body>
>     <img src="xxx" title="sch&ouml;ner text" />
>   </body>
> </html>

Die XML-Deklaration kommt nach oben. Als zweites kommt dann die 
Dokumenttypangabe, die Du hier abkürzt. Z.B.:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Hier müsste jetzt der Parser nachsehen, welche Entities ersetzt werden 
sollten. Bei näherem Hinsehen, stehen die aber nicht direkt drin sondern 
in einer weiteren Datei:
http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent
Das wäre also ein bisschen viel Aufwand für den Parser. Woher soll er 
aber das Entity &ouml; kennen? Die sind für XHTML definiert und nicht 
für XML!

Du hast jetzt mehrere Möglichkeiten.
1. Du wählst gleich einen Latin-1-Zeichensatz:
<?xml version="1.0" encoding="ISO-8859-1"?>
Dann kannst Du Dir die Entities sparen. (Beste Lösung)
2. Die packst den Inhalt der xhtml-lat1-Datei in Dein Dokument. (Sind ja 
nur 200 Zeilen.)
3. Du schreibst statt &ouml; &#246; Diese Entities kannst Du direkt in 
XML verwenden. (Zweitbeste Lösung)
Notfalls kann man ja mit str_replace vorher die Datei entsprechend 
präparieren und alle xhtml-Entities austauschen.

Viele Grüße

Peter

php::bar PHP Wiki   -   Listenarchive