Mailinglisten-Archive |
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ö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 ö 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 ö ö 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