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